随着家里养的植物和看的植物学方面的书越来越多,对植物及其植物学方面的兴趣就越来越浓厚,虽有志于此的观察和记录,乃成“Botany”之聚合。

万物皆有其理,与植物的对话,观其貌,究其道,恒以时间,乃生命之一世。观察植物,察其微,一花一世界;记录植物,以静载动,一木一浮生。人与草木存于天地间,生命无异,相克相生,殊途同归,植物志,乃生命之志也。

[img width=60% [https://cl.ly/19479b222df8/38626.jpg]]

//芬兰艺术家Christoffer Nicodemus Relander作品//

就植之理,可参唐柳宗元之《种树郭橐驼传》:


<<<
郭橐驼,不知始自何名。病偻,癃然伏行,有类橐驼者,故乡人号之“驼”。驼闻之曰:“甚善,名我固当。”因舍其名,亦自谓橐驼云。其乡曰丰乐乡,在长安西。驼业种树,凡长安豪富人为观游及卖果者,皆争迎取养。视驼所种树,或移徙,无不活,且硕茂蚤实以蕃。他植者虽窥伺效慕,莫能如也。
有问之,对曰:“橐驼非能使木之寿且孳也,以能顺木之天,以致其性焉耳。凡植木之性,其本欲舒,其培欲平,其土欲故,其筑欲密。既然已,勿动勿虑,去不复顾。其莳也若子,其置也若弃,则其天者全而其性得矣。故吾不害其长而已,非有能硕而茂之也;不抑耗其实而已,非有能蚤而蕃之也。他植者则不然,根拳而土易,其培之也,若不过焉则不及。苟有能反是者,则又爱之太恩,忧之太勤,旦视而暮抚,已去而复顾。甚者爪其肤以验其生枯,摇其本以观其疏密,而木之性日以离矣。虽曰爱之,其实害之;虽曰忧之,其实仇之,故不我若也。吾又何能为矣哉?”
<<<

就植之道,可参郭橐驼之悟也:


<<<
问者曰:“以子之道移之官理可乎?”驼曰:“我知种树而已,理,非吾业也。然吾居乡,见长人者好烦其令,若甚怜焉,而卒以祸。旦暮吏来而呼曰: ‘官命促尔耕,勖尔植,督尔获。蚤缲而绪,蚤织而缕,字而幼孩,遂而鸡豚。’鸣鼓而聚之,击木而召之。吾小人具飧餐以劳吏,且不得暇,又何以蕃吾生安吾性耶?故病且怠。若是,则与吾业者其亦有类乎?”
问者曰:“嘻,不亦善夫!吾问养树,得养人术。”传其事,以为官戒也。
<<<

后宫戏风云又起,《延禧攻略》大热,网上鄙视链又泛涟漪。搁前些年,我也会对热衷这类宫斗戏的看客嗤之以鼻,这是一种狭隘的价值观意识流作祟。前些年我追《越狱》也不亦乐乎,每周二凌晨爬起来与美国同步观看。大众娱乐或者大众消费最大的特点是普世性,作为一种娱乐无可厚非。读书也一样,有读无类,读《资本论》的不一定比读《故事会》的人高尚多少。

之所以提起《延禧攻略》,是因为今天翻看《齐如山回忆录:清宫史话》,其中一章详细介绍了清代皇宫内务府的职能、人事、个中机枢和轶事掌故。书中提到《延禧攻略》的”延禧宫“(电视剧我没有看,我不知道名字中的延禧是不是就是指的是紫禁城中的延禧宫),从中可以看出一些历史纪事。

''延禧宫为什么会频繁发生火宅?''

书中其中一部分这样写道:


<<<
清朝紫禁城内,所有办公的机构,都归阉人太监所管,不归阉人所管者只有三个机关:一是内务府,二是太医院,三是如意馆.......在外西路以西,尚没什么大的建筑,有些树木及小房子,为太监的家眷所居。这是使内务府最头疼的地方,因为此处住的人很多,都是乡下来的,多的时候,到过四五千人,虽然都可以出入神武门,但总不十分方便,且路也颇远,所以里边有小茶馆、小饭铺、宝局(赌场)、烟馆等等的组织。家家自己做饭,每到饭前,炊烟缕缕袅袅于树林之中,倒是够一幅图画,但是虽在宫墙之外,也有时可发生火警。不但这些种组织是私设的,就连这些人,也有十之七八是不通天的,皇上是不知道的,可是内务府不敢严行禁止,因为他们都与太监有关系,内务府怕得罪太监,便不肯过问,然倘闹出事来,则仍是内务府的责任。据内务府的档案说,道成年间,一次由此处驱逐出去了三千多人,由此足见紫禁城以内,也相当的乱了.....总之是宫墙之外,紫禁城之内,所有工作人员,小工差役人等,都归内务府所管,这种人员,既非内监,又非兵丁,统名之曰苏拉,满洲话闲散的意思。我们同文馆的听差等等,也都叫做苏拉。
<<<


从齐如山的描述可以看出,容易着火的是紫禁城的“城中村”,或者叫做“紫禁城的贫民区”。看起来历史从来也没有怎么改变过,现今的“城中村”或“贫民区”照样遭到驱赶,也是以消防的名义,被驱赶者依然是做牛做马的社会底层。底层有权利可言吗?

紫禁城中的百年烂尾楼

延禧宫在明代既建,后着火重建,直到清代皇帝走出紫禁城这个皇城中的唯一西洋建筑也没有建成。《齐如山回忆录:清宫史话》中关于“内务府的发财”一节中有这样关于皇城中的西洋建筑的“悲催”记录:


<<<
西后虽然这些年皇宫内院,但没摸着住过洋楼,听说外国的洋楼,都好得不得了,所以也想盖一所洋楼,但此已在光绪庚子以后,各省的财政,固然都已很拮据,但西后之命令,也没有从前皇帝那样大的力量,这种事情,她固然不好意思冠冕堂皇的对大臣说,她也有点不敢,她怕吃了碰,于面子大不好看,只好同内务府嘀咕。这也是内务府出的主意,南苑俗称南海子,在明朝为皇帝游猎之所,在清朝初年,亦为皇帝惟一的避暑之处,所以康熙皇帝,每年在此歇夏。雍正以后,有了圆明园,各皇帝才不到此,仍然是专为养麋鹿野兽的处所,不许耕种。这个南苑,便归内务府所管。他便联络太监跟西后说,南苑本为养野兽预备狩猎之处,自光绪十几年,定河决口,围墙坍倒,所有野兽,尽行跑走,南苑早已无用,何不把这一大片地,卖给民间耕种,得款用以修盖洋楼,不但宫中方便,化无用为有用,民间亦感德不浅。

内务府便联合了森昌木厂,共同筹划.......结果周围一百一十多里的一片沃土,卖出之后,所得的款,只盖了几间狗洞式的洋楼,而且款项还是不够(大部分都被层层贪污掉了)。
<<<


这种“卖地求荣”真是末世气象,“眼看它起高楼,眼看它延宾朋,眼看它楼塌了”。卖地求荣也是当朝地方政府“一大政绩”,有些地方政府似乎已经出现严重负债,无以为继的地步了。

顺便看一下前清末世政府采购的惊人案例:


<<<
光绪大婚的时候,这当然是内务府最发财的机会。吾乡有一位郭先生,正在给一位内务府大臣家教家馆。有几位绣工,找了郭先生说,你的东家赶上这种发大财的差使,你不可以跟他说一说,谋点小事情赚几个钱吗?郭君也很以为然,见不着东家,就跟门房里管家说了说,管家替他回上去,并且把先生认识刺绣工人这句话,也说明了。该大臣很好,倒很想提拔提拔老夫子,便命管家说,去对老夫子说,他既认识绣工人员,当然是以做点刺绣活为就近,但一切刺绣的工作,都归苏州、杭州等处之织造官承办,如今幸尔有零碎小件不能齐备,就使老夫子揽一洞房门帘去绣可也。不过洞房门帘,是多数人看得见的,必须绣得好,方能交差作脸。务必用最好的绣线,最好的绣工,要能比江南绣得好才好,至于门帘的缎子,则可由库中领去。郭君一一如命,先画样子,交上来看妥后,才交人去绣。不怕花钱,自然工料都很好,共用了本钱五十余两银子,这个数字,在彼时就算相当的大。绣好之后,交上去一看很满意,说让他们开帐吧,并嘱郭君,可以多开一点。郭君同几个绣工,斟酌着开了五百两银子,把帐单送到门房,管家一看,说太少,可以多开点儿,拿回来改开,大家说是得多开,因为门房里也得要一份,遂开了一千两,门房把帐单呈上去,该大臣说,再让他多开点,于是大胆就开了五千两。大家以为这个数字未免太大,既至交上去,该大臣乐了一乐,说不开展,提起笔来,改成了两万五千两。到库上如数领下,以五千两交给郭君,其余就归他自己了。郭君以一千两谢门房,门房诸人还是看不起这一笔,以为多少没有什么大关系,郭君自己得了三千两,几个工人分了一千两,都是心满意足,以为发了财。本来从前念书人,进了秀才补了廪生,一辈子果能剩下一千两银子,那就真得算是发财,何况三千两呢?

<<<

从最初的50两申请,到最后的25000两拨付,整整翻了500倍。太黑了!这就是所谓的政府采购。

再来说一下齐如山这本书吧。这是看齐如山的第二本书了(第一本是《[[中国馔馐谭]]》),作为清朝遗老,他写这样的题材一定是后无来者的,因为作者不仅亲临其境,感同身受,一些还是作者的自身经历写就。看这样的书好过于那些故弄玄虚什么大清秘史之类,那些都是资料堆砌、子虚乌有、胡说八道。

2018年08月26日周日下午07:54:46
!!! 吕克尔:《诠释的冲突》

<<<
“所有诠释学的目的,都是要征服存在于经典所属的过去文化时代与诠释者本身之间的疏远和距离。借由克服这距离,使自己与经典的时代合一,注释者才能够使其意义为自己所有:他使陌生成为熟悉,也就是说,他使它属于自己。这正是他透过理解他者而得到他所追求之自我理解的成长。因此,每一诠释学,无论外显地或隐含地,都是经由理解他者而有的自我理解”(14—15页)。
<<<
软科学中大部分都是诠释学。最典型的代表如红学,最近又热起了对《金瓶梅》的解读,各路妖魔鬼怪见仁见智一通解释。


!!! 陈冠中:《盛世》
<<<
“在过去二十多年的官方论述中,甚少提到一九八九年,好像只要不提,它就不存在,为免惹事,民间的论述往往也避而不谈整个八九年,连追忆八十年代的话题,也是到八八年就戛然而止。所以有人说笑,说在中国,一九八八年过后,就到一九九○年了”,下面接着说“一年不见了,失踪了”,这一年的失踪,和二十八天的失踪,其实是一回事儿(208页)。
<<<

难得一见的论述。

追寻失踪的时间,是为了“打捞”记忆。

葛兆光的评论更是大胆,居然“堂而皇之”的出现在国内正规出版物上,罕见。


<<<
当历史被遗忘,连续性便不再存在,于是合理性不需要“前尘往事”的证明,人们如何理解这个国家当下的政治?当记忆被删减,罪恶总是不被惩罚,合法性也不再被“连带责任”所牵累,政权如何会有反省和内疚的可能?中国始终政治权力高于一切,政治权力永远有“治外”的“豁免权”,一切进退左右、合纵连横,都由政治决定,尽管在某种国际背景下它可以超越全球波澜,可以免于金融海啸、逃脱国际舆论,但一旦有国家政治的优先需要,什么宪政、制度、法律、民意,就全无分量,如此,民众如何能够有民主、自由和尊严?
<<<

2019年03月13日周三下午11:52:35
<<<
人无癖不可与交,以其无深情也;人无疵不可与交,以其无真气也。
<<<
上句是张岱在[[陶庵梦忆]]“祁止祥癖”篇所述祁止祥之语。张岱的这位老友,其癖其好也多,“余友祁止祥有书画癖,有蹴鞠癖,有鼓钹癖,有鬼戏癖,有梨园癖。.....止祥去妻子如脱屣耳,独以娈童崽子为性命,其癖如此。" 后人对祁止祥本人没有多少提及,而张岱对他的评语却被反复引用,甚至成了一块文人赞誉他人的遮丑布。

最近在[[酝酿戒烟|戒烟录]]。昨晚看[[雅记清词写流韵]],温一如忆顾曼殊一文《曼殊逸事》载顾也是个烟鬼:

<<<
曼殊言动,不假矫揉,自然诙诡;每令人捧腹解颐,有东方淳于之风。性嗜雪茄,初抵东京时,一日囊空,至敲落金齿,付质以买吸之。每于批欧美小说中,有雪茄者,辄批云:“雪茄!又是雪茄!”
<<<

顾曼殊可真是个瘾君子,敲断牙齿为销魂。同为烟民,感同身受。而顾曼殊另一癖好则更奇:

<<<
曼殊虽亦善属诗文,要以作画为生平绝艺,着黑不多,清逸淡远,有倪云林之致。从不轻易落笔,虽极贫乏,只有鬻小说而未鬻画。据知友之推测,欲求之者,须资助其遨游名山大川,并伴以美人,始可着手。其代价固非世之鬻画者可比。
<<<

与顾曼殊嗜烟比,而民国时期另外一位老兄徐訏在[[民风野趣幽然醉]]上有《论烟》篇,不仅对抽烟大为赞美,更把抽烟上升到了理论、艺术和人类进步的高度:


<<<
假如把文明史与吸烟发明之日期相较,立刻可以看出人类文明的进步,在吸烟史前是何等迟缓?而在史后是何等的迅速呢?

用功一点人可以去算计,科学家哲学家文学家政治家外交家等,凡是有才干有能力的人,不吸烟者要是有一千分之一,那才是咄咄怪事!女子在文化上少贡献,我不相信会不是少吸烟之故,女诗人李清照如果肯多多吸烟,那她的诗词必能更光耀万丈,不会只取材于香炉之烟雾上面的!

这还不够,''烟在一方面是助人以进取的精神,他方面则是给人以疲倦的安慰。''她在一方面是起科学的作用,他方面是收艺术的功效的。凡名利情场上的失意者,可以此为安慰,而得意者也可以助其得意。

吸烟是艺术的事情,但能享受这项艺术,必需讲究吸烟的艺术。
<<<

我实在佩服这位老兄升华抽烟行为,为人类的欲望找出诸多借口。这是真爱。不过搁在现代社会,这老兄的日子也恐怕不好过吧。不管怎么样,抽烟是一件私人事情,个人之嗜好无伤大雅,随兴而为。

走笔到此,似乎现在我有点理解浪人张岱为什么写下”''人无癖不可与交,以其无深情也;人无疵不可与交,以其无真气也''“这句话了。''物与类聚,人与群分''。“同明相照,同类相求。云从龙,风从虎,圣人作而万物睹。”<<footnote "[1]" “同明相照,同类相求。”“云从龙,风从虎,圣人作而万物睹。”伯夷、叔齐虽贤,得夫子而名益彰。颜渊虽笃学,附骥尾而行益显。--司马迁《史记·伯夷列传》">> 张岱本身也是个性情中人,怎么会不给同好说几句好话那,试看张岱自为墓志铭便知:

{{2017年11月14日 下午 08:52:39}}

还有那位晚明才子李渔,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。如若二人生在同一时期,相信彼此也能”鬼混“在一起吧。

突然忆起顾曼殊也是个华服爱好者,尤其喜欢西服(在民国时期,是很时髦的做派):

<<<
(顾曼殊)盖以华贵为乐也。件好着西服,并甚讲究。尝在天蟾舞台看戏,隔座为前清财阀某眷属,艳装盛服,备极豪奢。吸水烟,吹灰屑落于曼殊外衣上,乃夷然置之,任其延烧,盖以为不宜拂美人之意也。
<<<

顾曼殊真奇人也,甘愿忍痛自焚而不愿拂美人之意。美人重于华服,涵养和优雅等同生命。真爱也!

2018年04月11日周三下午03:15:06

[[“爱美人喜华服耽美食好文艺”之二]]
“What you see is all there is”

2018年01月30日周二下午05:58:47
本周假疫苗事件成为社会关注焦点,以迅雷不及掩耳之势盖过了P2P公司跑路和中美贸易的热度。类似的事情还会继续发生,这不是第一起事件,也不是最后一起。因为这个社会没有底线。一个社会的底线在哪里?不在新闻联播里,也不在两会提案中,它在`人生的两头 --- 生和死,对生的呵护,对死的尊重`。一个社会有人类屠杀般的计划生育政策,有农村老人对生的绝望和对死的渴望,有对父母、师长和老人的举报和批斗(文革),可想而知这个社会基本上是无底的,没有下限。但是一定有上限,这个上限(或上线)就是那条看不见但始终悬在每个人头上的那条“红线”,就是每日里你说话、网上发表言论等发声时不自觉进行自我审查的自我政治意识线,没有人告诉你该怎么做,和不应该做什么,但等你做了什么的时候一定有人出来搜捕你,告诉你做错了什么。至于说什么时候告诉你,或者说什么时候请你喝茶,没有标准,一是看“老大哥”的心情,愿意不愿意搭理您,二是看这事对“老大哥”是不是有利。举例来说,同样是聚会游行,当名义是“抵制日货”(或者抗议美国单边制裁)的时候是有可能可行的,但当名义是抗议暴力拆迁或者关怀弱势群体的时候,哪怕只有三五十个人,一定是不可行的。

可笑的是,`我们现在自觉和不自觉的已经把令人敬畏的“老大哥”装在了口袋里。`不管你在哪里,做什么,和什么人在一起,你都事无巨细的告诉了“老大哥”。早在上世纪早期(20年代),人们已经开始担心信息革命计算机和通信技术会导致乔治·奥威尔的反乌托邦小说《1984》所描述的那种集控现象的产生。100年后,我们反而把“老大哥”请到家里来了。人类是多么的不长进啊(至少是在中国)。

在《文明及其缺陷》(Civilization and Its Discontents)中,弗洛伊德指出人类每向前迈出一大步,都要付出某种代价——`牺牲旧有的安全感,同时制造并加剧某种新的紧张。`100年前人们的紧张,延漫到了今天,紧张依然在膨胀和加剧。经济学里有一个“看不见的手”指挥着货币的流动达到平衡。而政治和科技一旦联姻,有没有一只“看不见的手”存在?使政治和科技达到一种平衡?使人们从新技术带来的紧张重回安全感。我想这种手是存在的,至少我个人认为在一些西方国家是存在的。这也是科技哲学的主要命题之一。前乔治亚理工大学研究技术史教授Melvin Kranzberg(已故)曾经在30年前提出过6条技术定理(见此   <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" $state="image-buttons">


# 技术不好也不坏;也不是中性的。
# 发明是需求之母。
# 技术都是成套出现,或大或小。
# 虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。
# 历史相关性普遍存在,但技术的历史相关性最强。
# 技术是深受人为因素影响的一种活动。
</$appear>),其中有两条是:虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导;技术是深受人为因素影响的一种活动。这个人为因素和非技术因素就是政治。而在中国,政治(政治制度和法律)是严重滞后于技术的,即便是灵活的法律或法规也是被技术牵着鼻子走,所以弗洛伊德老先生所说的技术进步所制造并加剧某种新的紧张,只有这种紧张膨胀到爆裂,才会重拾旧有的安全感。这非常符合中国人哲学,不破不立,枪打出头鸟,允许一部分先富起来,稳定压倒一切等等充满了东方哲学的行为准则。

德国哲学家尼采说,`我们只需一个生存的目的,就可以找到一千个求生的方法`。是的,这就是人类的苟且和不长进。

2018年07月24日周二上午01:07:07
!!! 雷蒙·阿隆:《知识分子的鸦片》
通常的赞扬革命的观念中,有两个基点:一是只有吻合左派意识形态中的人性、解放、自由与人人平等,才可以冠以“革命”这一个庄严的名词;二是革命只有在推翻既存的、为权势者所控制的体制,建立新体制,才能算是革命(46页)

“革命”常常成为知识分子的鸦片,就是因为它有时也表达一种“怀旧情绪,只要社会依旧不完美,而且人们满怀热情尝试去改变它,这种怀旧仍然会长存。……革命的神话为满怀乌托邦思想的知识分子提供逃避的避难所,它变成介之于真实与理想之间的一位神秘且难于逆料的调解者”(79页)。

由于对这种绝对的信仰,马克思主义使很多知识分子进入一种类似基督徒的宗教经验:“古老的信仰以一种拟似的科学形式复活,这对弃绝了信仰的心灵自然有其吸引力。宗教传说可以视为真理的预显,正如现代观念可以视为古老迷信之遗物”(81页);“无产阶级与政党的勇猛斗士,犹如早期的基督徒,期待一种新世界的来临。由于无产阶级没有剥削其同胞,所以依旧纯洁且心怀怜悯,孕育着人性新机的阶级正起而反抗腐朽的过去”(104页)。

!!! 许烺光:《驱逐捣蛋者——魔法、科学与文化》

宗教与科学是人类需要的双胞胎,宗教与魔法之间也并不存在截然的分界。 许烺光说:''“美国拓荒者们的箴言是,‘向上帝祷告,保持你的火药干燥’。''纵观人类历史及其著述,这样的箴言的确多少表达了过去一切民族的思想精神,它或许还要贯穿未来的所有文化。”(161页)

!!! 彼得·柏克:《知识社会史——从古腾堡到狄德罗》

彼得·柏克在《论犹太人在近现代欧洲知识界的优胜地位》中指出,犹太人何以在近现代尤其是十九世纪欧洲知识界的创造力是登峰造极的:

<<<
“这些犹太知识分子因与周遭文化中认为理所当然的想法保持距离,遂能有知识上的创新能力”(中译本,30页)。

“犹太知识分子位处于两个文化世界的边界上,这个位置鼓励怀疑和独立,使他们容易成为另一位社会学家意大利人巴烈图(Pareto)所谓的知识‘思索者’”(76页)。
<<<

2019年03月08日周五下午03:13:39
.tc-tiddler-body {
clear: both;
}

.float-right {
float:right;
}

/* LINKS */

a{
	-webkit-transition: 200ms;
    -moz-transition: 200ms;
    -o-transition: 200ms;
    transition: 200ms;
}

a.tc-tiddlylink-shadow {
color:#567;
font-weight:normal;
}

a.tc-tiddlylink-resolves.tc-tiddlylink-shadow {
font-weight:bold;
}

.redirected {
color:#dd1144;
}

.tb-links dd span:not(:last-child):after{
content:", ";
}

.tb-links > span:not(:last-child):after{
content:", ";
}

.tb-links > a:not(:last-child):after{
content:", ";
}

/* TITLE */




/* TAGLIST */




/* TIMELINE */



/* TABLES */

tr, td, th {
vertical-align:top;
}

.no-border,
.no-border th,
.no-border tr,
.no-border td {
border:0;
}


/* DEFINITIONS */

dl:not(.tb5-markup){
margin:0;
}

dd{
margin-left:14px;
}

dd:before{
content: "» ";
}

.no-before:before{
content:none;
}


/* SLIDERS */




/* LISTS */

ol ol {
list-style-type: lower-alpha;
}

ol ol ol{
list-style-type: decimal;
}

.tc-tiddler-body .tc-tag-list-item,
.tc-tiddler-body .tc-tag-label{
margin:0;
}

.tc-search-results {
padding-top: 0;
}



/* INFO BOXES */

.note {
padding: 10px;
background: #fcfcfc;
border-radius: 15px;
border: 1px solid #ccc;
}

.warn,
.warn a {
color: #dd1144;
}

.summary {
font-style:italic;
color:grey;
}

.tb-thumbs{
width: 160px;
margin: 0 10px 10px 0;
}

.grey-svg svg{
fill:lightgrey;
height:12px !important;
}

.grey-svg:hover svg{
fill:grey;
}
\define a:target()
<$list filter="[regexp:alink<regexp>limit[1]]"><$link><<target>></$link></$list>
\end

\define a:(target)
<$set name="regexp" value="\|$target$\|(?i)"><$set name="target" value="$target$"><<a:target>></$set></$set>
\end

\define alink(target) 
<<a: "$target$">> 
\end
no
TableOfContents
no
below
bottom
no
Journal
@@.note
''Keywords:'' {{!!description}}
@@
YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss
hide
hide
show
show
show
show
hide
hide
hide
yes
yes
yes
2
no
tc-btn-invisible
no
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2018, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/add-comment": {
            "title": "$:/core/images/add-comment",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-add-comment tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M56 56H36a8 8 0 1 0 0 16h20v20a8 8 0 1 0 16 0V72h20a8 8 0 1 0 0-16H72V36a8 8 0 1 0-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n        <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n    </g>\n</svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-auto-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n</svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t    <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n    <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n        <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n        <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n        <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n        <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n        <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-copy-clipboard tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\">\n\t\t<rect x=\"40\" y=\"40\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"82\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"54\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"96\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"68\" width=\"12\" height=\"8\" rx=\"4\"></rect>\n\t\t<path d=\"M40,16 L23.9992458,16 C19.5813843,16 16,19.5907123 16,24 C16,24.0016363 16.0000005,24.0032725 16.0000015,24.0049086 C16.0000005,24.0065441 16,24.0081803 16,24.0098166 L16,119.990183 C16,119.99182 16.0000005,119.993456 16.0000015,119.995092 C16.0000005,119.996727 16,119.998364 16,120 C16,124.409288 19.5813843,128 23.9992458,128 L104.000754,128 C106.205061,128 108.203844,127.105595 109.652065,125.659342 C111.102424,124.21251 112,122.214511 112,120.007595 L112,103.992405 C112,99.5776607 108.418278,96 104,96 C99.5907123,96 96,99.5783218 96,103.992405 L96,112 L32,112 L32,32 L96,32 L96,40.0075946 C96,44.4223393 99.581722,48 104,48 C108.409288,48 112,44.4216782 112,40.0075946 L112,23.9924054 C112,21.7851587 111.104671,19.7871591 109.657101,18.3409203 C108.203844,16.8944047 106.205061,16 104.000754,16 L88,16 C88,11.5907123 84.4151006,8 79.9929031,8 L48.0070969,8 C43.5881712,8 40,11.581722 40,16 Z M44,14.9958262 C44,12.7889923 45.7964248,11 48.0000255,11 L79.9999745,11 C82.2091276,11 84,12.7965212 84,14.9958262 L84,19.0041738 C84,21.2110077 82.2035752,23 79.9999745,23 L48.0000255,23 C45.7908724,23 44,21.2034788 44,19.0041738 L44,14.9958262 Z\"></path>\n\t\t<rect x=\"62\" y=\"64\" width=\"66\" height=\"16\" rx=\"8\"></rect>\n\t\t<path d=\"M60.6568542,85.6568542 L76.6568542,69.6568543 L65.3431458,69.6568542 L81.3431458,85.6568542 C84.4673401,88.7810486 89.5326599,88.7810486 92.6568542,85.6568542 C95.7810486,82.5326599 95.7810486,77.4673401 92.6568542,74.3431458 L76.6568542,58.3431458 C73.5326599,55.2189514 68.4673401,55.2189514 65.3431458,58.3431457 L49.3431458,74.3431457 C46.2189514,77.4673401 46.2189514,82.5326599 49.3431457,85.6568542 C52.4673401,88.7810486 57.5326599,88.7810486 60.6568542,85.6568542 L60.6568542,85.6568542 Z\" transform=\"translate(71.000000, 72.000000) rotate(-90.000000) translate(-71.000000, -72.000000) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n        <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n        <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-erase tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-excise tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-file tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"68\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"84\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"100\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fixed-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\" transform=\"translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \"></path>\n        <path d=\"M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\" transform=\"translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\" transform=\"translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \"></path>\n        <path d=\"M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\" transform=\"translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-others tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"56.0314331\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\" transform=\"translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \"></path>\n        <path d=\"M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\" transform=\"translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-folder tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\"></path>\n        <path d=\"M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g>\n        <g>\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n        <g fill-rule=\"evenodd\">\n            <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n        </g>\n    </svg>\n"
        },
        "$:/core/images/gitter": {
            "title": "$:/core/images/gitter",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-gitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 18 25\">\n  <rect x=\"15\" y=\"5\" width=\"2\" height=\"10\"></rect>\n  <rect x=\"10\" y=\"5\" width=\"2\" height=\"20\"></rect>\n  <rect x=\"5\" y=\"5\" width=\"2\" height=\"20\"></rect>\n  <rect width=\"2\" height=\"15\"></rect>\n</svg>\n"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n        <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n        <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-1 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-2 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-3 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-4 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-5 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-6 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <g transform=\"translate(0.049406, 0.000000)\">\n            <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n            <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n            <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-italic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n         <polygon points=\"66.7114846 0 89.1204482 0 62.4089636 128 40 128\"></polygon>\n    </g>\n</svg>"
        },
        "$:/core/images/left-arrow": {
            "title": "$:/core/images/left-arrow",
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-line-width tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\"></path>\n        <path d=\"M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-link tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\" transform=\"translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\"></path>\n        <path d=\"M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\" transform=\"translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/linkify": {
            "title": "$:/core/images/linkify",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"><path d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-bullet tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-number tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z\" transform=\"translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) \"></path>\n        <path d=\"M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-block tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-line tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n    \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t        <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t        <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n        </g>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n    </g>\n    </g>\n</svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n        <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n            <g transform=\"translate(0.000000, 0.000000)\">\n                <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n                <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n                    <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n                </text>\n            </g>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-opacity tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\"></path>\n        <path d=\"M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\"></path>\n        <path d=\"M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-open-window tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\"></path>\n        <path d=\"M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-paint tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-palette tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-picture tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-closed tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\"></path>\n        <rect x=\"62\" y=\"96\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \" x=\"78\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \" x=\"46\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \" x=\"30\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \" x=\"94\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \" x=\"110\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \" x=\"14\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-open tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\"></path>\n        <path d=\"M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,71 L112,30.5 L111.96811,30.5 L111.96811,30.5 C111.932942,28.4998414 111.151676,26.510538 109.625176,24.9840387 L86.9982489,2.35711116 C85.3482153,0.707077645 83.1589869,-0.071534047 81,0.0201838424 L81,0 L23.9992458,0 C19.5808867,0 16,3.58213437 16,8.00092105 L16,71 L24,71 L24,8 L81,8 L81,22.4996539 C81,26.9216269 84.5818769,30.5 89.0003461,30.5 L104,30.5 L104,71 L112,71 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n        <path d=\"M0,80.0054195 C0,71.1658704 7.15611005,64 16.0008841,64 L111.999116,64 C120.83616,64 128,71.1553215 128,80.0054195 L128,111.99458 C128,120.83413 120.84389,128 111.999116,128 L16.0008841,128 C7.16383982,128 0,120.844679 0,111.99458 L0,80.0054195 Z M104,96 C108.418278,96 112,92.418278 112,88 C112,83.581722 108.418278,80 104,80 C99.581722,80 96,83.581722 96,88 C96,92.418278 99.581722,96 104,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-quote tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>"
        },
        "$:/core/images/rotate-left": {
            "title": "$:/core/images/rotate-left",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-rotate-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect x=\"48\" y=\"96\" width=\"80\" height=\"32\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 0 1-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 1 1-5.657 5.657L49.172 43.142a4 4 0 0 1 0-5.657l11.313-11.313a4 4 0 1 1 5.657 5.656l-4.821 4.822z\"/></g></svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-size tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\"></path>\n</svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-spiral tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-stamp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-strikethrough tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\"></path>\n        <rect x=\"5\" y=\"54\" width=\"118\" height=\"16\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-subscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-superscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n        <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\"></path>\n        <path d=\"M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\" transform=\"translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-off tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-on tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/transcludify": {
            "title": "$:/core/images/transcludify",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"><path d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 0 0 2.75-.932 6.762 6.762 0 0 0 2.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 0 0-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 0 0-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 0 0 2.75-.932 6.762 6.762 0 0 0 2.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 0 0-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 0 0-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 0 0-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 0 0 .71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 0 0-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 0 0 2.262 2.084 8.868 8.868 0 0 0 2.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 0 0-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 0 0 .71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 0 0-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 0 0 2.262 2.084 8.868 8.868 0 0 0 2.75 1.02c.946.177 1.745.266 2.395.266v7.806z\" fill-rule=\"evenodd\"/></svg>\n"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-underline tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\" transform=\"translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \"></path>\n        <path d=\"M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\" transform=\"translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\" transform=\"translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \"></path>\n        <path d=\"M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\" transform=\"translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/up-arrow": {
            "title": "$:/core/images/up-arrow",
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "copy to clipboard"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "Copy this text to the clipboard"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "wikilink"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "Wrap selection in square brackets"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "rotate left"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "Rotate image left by 90 degrees"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "transclusion"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "Wrap selection in curly brackets"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "Title of new tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "Permalink/permaview Mode"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "Choose how permalink/permaview is handled:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "Copy permalink/permaview URL to clipboard"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "Update address bar with permalink/permaview URL"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "Default More Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "Specify which More sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "Stylesheets"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "Expand All"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "Restore"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "Defines how requests are authenticated by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "Defines how individual URL patterns are handled by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` element background"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` element text"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "field list"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "Show field list"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following references to this tiddler will not be automatically updated:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "A temporary storage field used in [[$:/core/templates/static.content]]"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "Import tiddlers from a file",
            "text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath>\n--load <dirpath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "Renders individual tiddlers to files",
            "text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''template'': Optional template through which each tiddler is rendered\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "Saves individual raw tiddlers to files",
            "text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
            "text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "Preview:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "Text"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "Text (Raw)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "Fields"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "Diff"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "Diff (Fields)"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> differences"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "Copied to clipboard!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "Failed to copy to clipboard!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "Explorer"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "Editor font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "References"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "title": "$:/core/modules/commander.js",
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "title": "$:/core/modules/commands/build.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "title": "$:/core/modules/commands/clearpassword.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "title": "$:/core/modules/commands/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "title": "$:/core/modules/commands/fetch.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tdata = [];\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        data.push(chunk);\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(Buffer.concat(data),type,options,url);\n\t\t        callback(null);\n\t        } else {\n\t        \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t        \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t        \t} else {\n\t\t        \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t        \t\t\n\t        \t}\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "title": "$:/core/modules/commands/help.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/import.js": {
            "title": "$:/core/modules/commands/import.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "title": "$:/core/modules/commands/init.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/listen.js": {
            "title": "$:/core/modules/commands/listen.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "title": "$:/core/modules/commands/load.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count) {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "title": "$:/core/modules/commands/makelibrary.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "title": "$:/core/modules/commands/output.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "title": "$:/core/modules/commands/password.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/render.js": {
            "title": "$:/core/modules/commands/render.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "title": "$:/core/modules/commands/rendertiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/save.js": {
            "title": "$:/core/modules/commands/save.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "title": "$:/core/modules/commands/savetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "title": "$:/core/modules/commands/savetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "title": "$:/core/modules/commands/server.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "title": "$:/core/modules/commands/setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "title": "$:/core/modules/commands/unpackplugin.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "title": "$:/core/modules/commands/verbose.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "title": "$:/core/modules/commands/version.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "title": "$:/core/modules/config.js",
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "title": "$:/core/modules/deserializers.js",
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "title": "$:/core/modules/editor/engines/framed.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "title": "$:/core/modules/editor/engines/simple.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "title": "$:/core/modules/editor/factory.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag);\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\t\t\t\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/rotate-left.js": {
            "title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,event.paramObject.count);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== event.paramObject.count) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/save-selection.js": {
            "title": "$:/core/modules/editor/operations/text/save-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix unless they comprise the entire text\n\t\t\tif(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \"\";\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filters/addprefix.js": {
            "title": "$:/core/modules/filters/addprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "title": "$:/core/modules/filters/addsuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "title": "$:/core/modules/filters/after.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "title": "$:/core/modules/filters/all/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "title": "$:/core/modules/filters/all/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "title": "$:/core/modules/filters/all/orphans.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "title": "$:/core/modules/filters/all/shadows.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "title": "$:/core/modules/filters/all/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "title": "$:/core/modules/filters/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "title": "$:/core/modules/filters/backlinks.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "title": "$:/core/modules/filters/before.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "title": "$:/core/modules/filters/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/contains.js": {
            "title": "$:/core/modules/filters/contains.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "title": "$:/core/modules/filters/count.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "title": "$:/core/modules/filters/days.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "title": "$:/core/modules/filters/each.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "title": "$:/core/modules/filters/eachday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "title": "$:/core/modules/filters/editiondescription.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "title": "$:/core/modules/filters/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "title": "$:/core/modules/filters/enlist.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar list = $tw.utils.parseStringArray(operator.operand);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "title": "$:/core/modules/filters/field.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "title": "$:/core/modules/filters/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "title": "$:/core/modules/filters/get.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "title": "$:/core/modules/filters/getindex.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "title": "$:/core/modules/filters/has.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "title": "$:/core/modules/filters/haschanged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "title": "$:/core/modules/filters/indexes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "title": "$:/core/modules/filters/insertbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "title": "$:/core/modules/filters/is/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "title": "$:/core/modules/filters/is/image.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "title": "$:/core/modules/filters/is/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "title": "$:/core/modules/filters/is/orphan.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "title": "$:/core/modules/filters/is/shadow.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "title": "$:/core/modules/filters/is/system.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "title": "$:/core/modules/filters/is/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "title": "$:/core/modules/filters/is/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "title": "$:/core/modules/filters/is.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "title": "$:/core/modules/filters/limit.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "title": "$:/core/modules/filters/links.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "title": "$:/core/modules/filters/list.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "title": "$:/core/modules/filters/listed.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "title": "$:/core/modules/filters/listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/lookup.js": {
            "title": "$:/core/modules/filters/lookup.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "title": "$:/core/modules/filters/minlength.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "title": "$:/core/modules/filters/modules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "title": "$:/core/modules/filters/moduletypes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "title": "$:/core/modules/filters/next.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "title": "$:/core/modules/filters/prefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "title": "$:/core/modules/filters/previous.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/range.js": {
            "title": "$:/core/modules/filters/range.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "title": "$:/core/modules/filters/regexp.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "title": "$:/core/modules/filters/removeprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "title": "$:/core/modules/filters/removesuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "title": "$:/core/modules/filters/sameday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "title": "$:/core/modules/filters/search.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "title": "$:/core/modules/filters/shadowsource.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "title": "$:/core/modules/filters/sort.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "title": "$:/core/modules/filters/splitbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "title": "$:/core/modules/filters/storyviews.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subfilter.js": {
            "title": "$:/core/modules/filters/subfilter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subtiddlerfields.js": {
            "title": "$:/core/modules/filters/subtiddlerfields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "title": "$:/core/modules/filters/suffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "title": "$:/core/modules/filters/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [];\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "title": "$:/core/modules/filters/tagging.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "title": "$:/core/modules/filters/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "title": "$:/core/modules/filters/title.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "title": "$:/core/modules/filters/untagged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "title": "$:/core/modules/filters/x-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n\n    /*\n    Fetch titles from the current list\n    */\n    var prepare_results = function (source) {\n    var results = [];\n        source(function (tiddler, title) {\n            results.push(title);\n        });\n        return results;\n    };\n\n    /*\n    Moves a number of items from the tail of the current list before the item named in the operand\n    */\n    exports.putbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list after the item named in the operand\n    */\n    exports.putafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Replaces the item named in the operand with a number of items from the tail of the current list\n    */\n    exports.replace = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -count) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list to the head of the list\n    */\n    exports.putfirst = function (source, operator) {\n        var results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return results.slice(-count).concat(results.slice(0, -count));\n    };\n\n    /*\n    Moves a number of items from the head of the current list to the tail of the list\n    */\n    exports.putlast = function (source, operator) {\n        var results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return results.slice(count).concat(results.slice(0, count));\n    };\n\n    /*\n    Moves the item named in the operand a number of places forward or backward in the list\n    */\n    exports.move = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1),\n            marker = results.splice(index, 1),\n            offset =  (index + count) > 0 ? index + count : 0;\n        return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n    };\n\n    /*\n    Returns the items from the current list that are after the item named in the operand\n    */\n    exports.allafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index === -1 || index > (results.length - 2)) ? [] :\n            (operator.suffix) ? results.slice(index) :\n            results.slice(index + 1);\n    };\n\n    /*\n    Returns the items from the current list that are before the item named in the operand\n    */\n    exports.allbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index < 0) ? [] :\n            (operator.suffix) ? results.slice(0, index + 1) :\n            results.slice(0, index);\n    };\n\n    /*\n    Appends the items listed in the operand array to the tail of the current list\n    */\n    exports.append = function (source, operator) {\n        var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || append.length;\n        return (append.length === 0) ? results :\n            (operator.prefix) ? results.concat(append.slice(-count)) :\n            results.concat(append.slice(0, count));\n    };\n\n    /*\n    Prepends the items listed in the operand array to the head of the current list\n    */\n    exports.prepend = function (source, operator) {\n        var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,prepend.length);\n        return (prepend.length === 0) ? results :\n            (operator.prefix) ? prepend.slice(-count).concat(results) :\n            prepend.slice(0, count).concat(results);\n    };\n\n    /*\n    Returns all items from the current list except the items listed in the operand array\n    */\n    exports.remove = function (source, operator) {\n        var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || array.length,\n            p,\n            len,\n            index;\n        len = array.length - 1;\n        for (p = 0; p < count; ++p) {\n            if (operator.prefix) {\n                index = results.indexOf(array[len - p]);\n            } else {\n                index = results.indexOf(array[p]);\n            }\n            if (index !== -1) {\n                results.splice(index, 1);\n            }\n        }\n        return results;\n    };\n\n    /*\n    Returns all items from the current list sorted in the order of the items in the operand array\n    */\n    exports.sortby = function (source, operator) {\n        var results = prepare_results(source);\n        if (!results || results.length < 2) {\n            return results;\n        }\n        var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n        results.sort(function (a, b) {\n            return lookup.indexOf(a) - lookup.indexOf(b);\n        });\n        return results;\n    };\n\n    /*\n    Removes all duplicate items from the current list\n    */\n    exports.unique = function (source, operator) {\n        var results = prepare_results(source);\n        var set = results.reduce(function (a, b) {\n            if (a.indexOf(b) < 0) {\n                a.push(b);\n            }\n            return a;\n        }, []);\n        return set;\n    };\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "title": "$:/core/modules/filters.js",
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/info/platform.js": {
            "title": "$:/core/modules/info/platform.js",
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "title": "$:/core/modules/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "title": "$:/core/modules/language.js",
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "title": "$:/core/modules/macros/changecount.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "title": "$:/core/modules/macros/contrastcolour.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/dumpvariables.js": {
            "title": "$:/core/modules/macros/dumpvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "title": "$:/core/modules/macros/jsontiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\treturn this.wiki.getTiddlersAsJson(filter);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "title": "$:/core/modules/macros/makedatauri.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "title": "$:/core/modules/macros/now.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "title": "$:/core/modules/macros/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "title": "$:/core/modules/macros/resolvepath.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "title": "$:/core/modules/macros/version.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "title": "$:/core/modules/parsers/audioparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/binaryparser.js": {
            "title": "$:/core/modules/parsers/binaryparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar BinaryParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "title": "$:/core/modules/parsers/csvparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "title": "$:/core/modules/parsers/htmlparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "title": "$:/core/modules/parsers/imageparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "title": "$:/core/modules/utils/parseutils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "title": "$:/core/modules/parsers/pdfparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "title": "$:/core/modules/parsers/textparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "title": "$:/core/modules/parsers/videoparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/import.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/import.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "title": "$:/core/modules/pluginswitcher.js",
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "title": "$:/core/modules/saver-handler.js",
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\",\n\t\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "title": "$:/core/modules/savers/andtidwiki.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "title": "$:/core/modules/savers/beaker.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "title": "$:/core/modules/savers/download.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "title": "$:/core/modules/savers/fsosaver.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "title": "$:/core/modules/savers/manualdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "title": "$:/core/modules/savers/msdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "title": "$:/core/modules/savers/put.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "title": "$:/core/modules/savers/tiddlyie.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "title": "$:/core/modules/savers/twedit.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "title": "$:/core/modules/savers/upload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/server/authenticators/basic.js": {
            "title": "$:/core/modules/server/authenticators/basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + credentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/authenticators/header.js": {
            "title": "$:/core/modules/server/authenticators/header.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/routes/delete-tiddler.js": {
            "title": "$:/core/modules/server/routes/delete-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-favicon.js": {
            "title": "$:/core/modules/server/routes/get-favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-file.js": {
            "title": "$:/core/modules/server/routes/get-file.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\");\n\tvar filename = path.resolve($tw.boot.wikiPath,\"files\",decodeURIComponent(state.params[0])),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tif(err.code === \"ENOENT\") {\n\t\t\t\tstatus = 404;\n\t\t\t\tcontent = \"File '\" + filename + \"' not found\";\n\t\t\t} else if(err.code === \"EACCES\") {\n\t\t\t\tstatus = 403;\n\t\t\t\tcontent = \"You do not have permission to access the file '\" + filename + \"'\";\n\t\t\t} else {\n\t\t\t\tstatus = 500;\n\t\t\t\tcontent = err.toString();\n\t\t\t}\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-index.js": {
            "title": "$:/core/modules/server/routes/get-index.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"root-serve-type\")});\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\"));\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-login-basic.js": {
            "title": "$:/core/modules/server/routes/get-login-basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-status.js": {
            "title": "$:/core/modules/server/routes/get-status.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler-html.js": {
            "title": "$:/core/modules/server/routes/get-tiddler-html.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler.js": {
            "title": "$:/core/modules/server/routes/get-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddlers-json.js": {
            "title": "$:/core/modules/server/routes/get-tiddlers-json.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/tiddlers.json\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\tvar tiddlerFields = {};\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tif(name !== \"text\") {\n\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\ttiddlers.push(tiddlerFields);\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/put-tiddler.js": {
            "title": "$:/core/modules/server/routes/put-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/server.js": {
            "title": "$:/core/modules/server/server.js",
            "text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"path-prefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"hist\" variable)\n*/\nServer.prototype.listen = function(port,host) {\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t$tw.utils.log(\"Serving on \" + this.protocol + \"://\" + host + \":\" + port,\"brown/orange\");\n\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Listen\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/browser-messaging.js": {
            "title": "$:/core/modules/browser-messaging.js",
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "title": "$:/core/modules/startup/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "title": "$:/core/modules/startup/favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "title": "$:/core/modules/startup/info.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "title": "$:/core/modules/startup/load-modules.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "title": "$:/core/modules/startup/password.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "title": "$:/core/modules/startup/render.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = DRAFT_TIDDLER_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "title": "$:/core/modules/startup/rootwidget.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard  mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tevent.event.target.ownerDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tevent.event.target.ownerDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(event.event.target.ownerDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tevent.event.target.ownerDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tevent.event.target.ownerDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "title": "$:/core/modules/startup.js",
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "title": "$:/core/modules/startup/story.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "title": "$:/core/modules/startup/windows.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t    srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = title;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "title": "$:/core/modules/story.js",
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "title": "$:/core/modules/storyviews/classic.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "title": "$:/core/modules/storyviews/pop.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "title": "$:/core/modules/storyviews/zoomin.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "title": "$:/core/modules/syncer.js",
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || this.throttleInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\t\tcolour: \"cyan\",\n\t\t\tenable: this.logging\n\t\t});\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI) {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title),\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t});\n};\n\n/*\nCreate an tiddlerInfo structure if it doesn't already exist\n*/\nSyncer.prototype.createTiddlerInfo = function(title) {\n\tif(!$tw.utils.hop(this.tiddlerInfo,title)) {\n\t\tthis.tiddlerInfo[title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1,\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t}\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title),\n\t\thasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert($tw.language.getString(\"Error/RetrievingSkinny\") + \":\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields,false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Don't lazy load the same tiddler twice\n\tvar info = this.tiddlerInfo[title];\n\tif(!info || !info.hasBeenLazyLoaded) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.filterFn.call(this.wiki).indexOf(title) !== -1) {\n\t\t\tthis.createTiddlerInfo(title);\n\t\t\tthis.tiddlerInfo[title].hasBeenLazyLoaded = true;\n\t\t\t// Queue up a sync task to load this tiddler\n\t\t\tthis.enqueueSyncTask({\n\t\t\t\ttype: \"load\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tthis.createTiddlerInfo(task.title);\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress() === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields,true);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "title": "$:/core/modules/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "title": "$:/core/modules/upgraders/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "title": "$:/core/modules/upgraders/system.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/crypto.js": {
            "title": "$:/core/modules/utils/crypto.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/csv.js": {
            "title": "$:/core/modules/utils/csv.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
            "text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&amp;\").replace(d,\"&lt;\").replace(e,\"&gt;\").replace(f,\"&para;<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "title": "$:/core/modules/utils/dom/animator.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "title": "$:/core/modules/utils/dom/browser.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "title": "$:/core/modules/utils/dom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "title": "$:/core/modules/utils/dom/http.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e);\n\t}\n\treturn request;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "title": "$:/core/modules/utils/dom/modal.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "title": "$:/core/modules/utils/dom/notifier.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "title": "$:/core/modules/utils/dom/popup.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "title": "$:/core/modules/utils/dom/scroller.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t    srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "title": "$:/core/modules/utils/edition-info.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "title": "$:/core/modules/utils/fakedom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis.style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this.style) {\n\t\t\t\tstyle.push(s + \":\" + this.style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\")\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "title": "$:/core/modules/utils/filesystem.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/logger.js": {
            "title": "$:/core/modules/utils/logger.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(this.enable && console !== undefined && console.log !== undefined) {\n\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t}\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "title": "$:/core/modules/utils/parsetree.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "title": "$:/core/modules/utils/performance.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m].toFixed(2) + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "title": "$:/core/modules/utils/pluginmaker.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/transliterate.js": {
            "title": "$:/core/modules/utils/transliterate.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "title": "$:/core/modules/utils/utils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds());\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/\\x08/g, '\\\\b')           // backspace\n\t\t.replace(/\\x0c/g, '\\\\f')           // formfeed\n\t\t.replace(/\\t/g, '\\\\t')             // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn Buffer.from(string64,\"base64\").toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.generateNewTitle(this.actionBaseTitle),\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "title": "$:/core/modules/widgets/action-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "title": "$:/core/modules/widgets/action-navigate.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "title": "$:/core/modules/widgets/action-setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "title": "$:/core/modules/widgets/browse.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "title": "$:/core/modules/widgets/button.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "title": "$:/core/modules/widgets/checkbox.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "title": "$:/core/modules/widgets/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "title": "$:/core/modules/widgets/count.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/diff-text.js": {
            "title": "$:/core/modules/widgets/diff-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "title": "$:/core/modules/widgets/draggable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedTiddlers.tag || changedTiddlers[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "title": "$:/core/modules/widgets/droppable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t]);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "title": "$:/core/modules/widgets/dropzone.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "title": "$:/core/modules/widgets/edit-binary.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370;\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n\t}\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "title": "$:/core/modules/widgets/edit-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "title": "$:/core/modules/widgets/edit.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "title": "$:/core/modules/widgets/element.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "title": "$:/core/modules/widgets/encrypt.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "title": "$:/core/modules/widgets/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "title": "$:/core/modules/widgets/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "title": "$:/core/modules/widgets/image.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "title": "$:/core/modules/widgets/importvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "title": "$:/core/modules/widgets/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.key = this.getAttribute(\"key\");\n\tthis.tag = this.getAttribute(\"tag\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "title": "$:/core/modules/widgets/link.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "title": "$:/core/modules/widgets/list.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "title": "$:/core/modules/widgets/macrocall.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "title": "$:/core/modules/widgets/navigator.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{openLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),openLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")});\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.wiki.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-renaming-tiddler\", event);\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\t$tw.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "title": "$:/core/modules/widgets/password.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/qualify.js": {
            "title": "$:/core/modules/widgets/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "title": "$:/core/modules/widgets/radio.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n   \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n  \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/range.js": {
            "title": "$:/core/modules/widgets/range.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\n\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tvalue   = this.defaultValue;\n\tif(tiddler) {\n\t\tif($tw.utils.hop(tiddler.fields,this.tiddlerField)) {\n\t\t\tvalue = tiddler.fields[this.tiddlerField] || \"\";\n\t\t} else {\n\t\t\tvalue = this.defaultValue || \"\";\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tthis.wiki.setText(this.tiddlerTitle ,this.tiddlerField, null,this.inputDomNode.value);\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "title": "$:/core/modules/widgets/raw.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "title": "$:/core/modules/widgets/reveal.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = Math.max(0, this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = Math.max(0, this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = Math.max(0, this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = Math.max(0, this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? (this.stateField ? this.wiki.getTiddler(this.stateTitle).getFieldString(this.stateField) :\n\t\t(this.stateIndex ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) :\n\t\t\tthis.wiki.getTiddlerText(this.stateTitle))) || this[\"default\"] || this.getVariable(\"currentTiddler\") :\n\t\t(this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"]);\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) == 0);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) == 0);\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen || (this.stateTiddlerTitle && changedTiddlers[this.stateTiddlerTitle])) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "title": "$:/core/modules/widgets/scrollable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "title": "$:/core/modules/widgets/select.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tif(values.indexOf(select.children[i].value) != -1) {\n\t\t\t\tselect.children[i].selected = true;\n\t\t\t}\n\t\t}\n\t\t\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "title": "$:/core/modules/widgets/set.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "title": "$:/core/modules/widgets/text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "title": "$:/core/modules/widgets/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "title": "$:/core/modules/widgets/transclude.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "title": "$:/core/modules/widgets/vars.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "title": "$:/core/modules/widgets/view.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "title": "$:/core/modules/widgets/widget.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "title": "$:/core/modules/widgets/wikify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "title": "$:/core/modules/wiki-bulkops.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = (tiddler.fields.tags || []).slice(0),\n\t\t\t\t\tlist = (tiddler.fields.list || []).slice(0),\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "title": "$:/core/modules/wiki.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\tfunction replaceItem(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\treplaceItem(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\treplaceItem(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// We get the currPos //after// figuring out the newPos, because recursive replaceItem calls might alter title's currPos\n\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\treplaceItem(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DarkPhotos": {
            "title": "$:/palettes/DarkPhotos",
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-raw": {
            "title": "$:/core/templates/canonical-uri-external-raw",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
        },
        "$:/core/save/all-external-js": {
            "title": "$:/core/save/all-external-js",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
        },
        "$:/core/templates/tiddlywiki5.js": {
            "title": "$:/core/templates/tiddlywiki5.js",
            "text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
        },
        "$:/core/templates/tiddlywiki5.js/tiddlers": {
            "title": "$:/core/templates/tiddlywiki5.js/tiddlers",
            "text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
        },
        "$:/core/templates/tiddlywiki5-external-js.html": {
            "title": "$:/core/templates/tiddlywiki5-external-js.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/server/static.sidebar.wikitext": {
            "title": "$:/core/templates/server/static.sidebar.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
        },
        "$:/core/templates/server/static.tiddler.html": {
            "title": "$:/core/templates/server/static.tiddler.html",
            "text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
        },
        "$:/core/templates/server/static.tiddler.wikitext": {
            "title": "$:/core/templates/server/static.tiddler.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"tempCurrentTiddler\" value=<<currentTiddler>>>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=<<tempCurrentTiddler>>>\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</$importvariables>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n</html>\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/Actions/new-image": {
            "title": "$:/core/ui/Actions/new-image",
            "tags": "$:/tags/Actions",
            "description": "create a new image tiddler",
            "text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>>/>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-journal": {
            "title": "$:/core/ui/Actions/new-journal",
            "tags": "$:/tags/Actions",
            "description": "create a new journal tiddler",
            "text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-tiddler": {
            "title": "$:/core/ui/Actions/new-tiddler",
            "tags": "$:/tags/Actions",
            "description": "create a new empty tiddler",
            "text": "<$action-sendmessage $message=\"tm-new-tiddler\"/>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip=<<lingo Remove/Hint>>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n&times;\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>prefix[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\"\"\">\n{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\"\"\">\n<em>\n{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green\" style=\"background:blue;\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Stylesheets": {
            "title": "$:/core/ui/ControlPanel/Stylesheets",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-current": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from current",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from shadow (if any)",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/state/showeditpreview": {
            "title": "$:/state/showeditpreview",
            "text": "no"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/>&nbsp;<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">&times;</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n\\define tag-picker-actions()\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n</$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>>\n<$fieldmangler>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$set>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/linkify": {
            "title": "$:/core/ui/EditorToolbar/linkify",
            "caption": "{{$:/language/Buttons/Linkify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Linkify/Hint}}",
            "icon": "$:/core/images/linkify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((linkify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/rotate-left": {
            "title": "$:/core/ui/EditorToolbar/rotate-left",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/rotate-left",
            "caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
            "description": "{{$:/language/Buttons/RotateLeft/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/transcludify": {
            "title": "$:/core/ui/EditorToolbar/transcludify",
            "caption": "{{$:/language/Buttons/Transcludify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Transcludify/Hint}}",
            "icon": "$:/core/images/transcludify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((transcludify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Diff": {
            "title": "$:/core/ui/ImportPreviews/Diff",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Diff}}",
            "text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
        },
        "$:/core/ui/ImportPreviews/DiffFields": {
            "title": "$:/core/ui/ImportPreviews/DiffFields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
            "text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
        },
        "$:/core/ui/ImportPreviews/Fields": {
            "title": "$:/core/ui/ImportPreviews/Fields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Fields}}",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Text": {
            "title": "$:/core/ui/ImportPreviews/Text",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Text}}",
            "text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
        },
        "$:/core/ui/ImportPreviews/TextRaw": {
            "title": "$:/core/ui/ImportPreviews/TextRaw",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
            "text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
        },
        "$:/core/ui/KeyboardShortcuts/new-image": {
            "title": "$:/core/ui/KeyboardShortcuts/new-image",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-image))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-journal": {
            "title": "$:/core/ui/KeyboardShortcuts/new-journal",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-journal))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-tiddler": {
            "title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-tiddler))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Explorer": {
            "title": "$:/core/ui/MoreSideBar/Explorer",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Explorer/Caption}}",
            "text": "<<tree \"$:/\">>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$reveal>\n</$list>\n</div>\n\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/drafts": {
            "title": "$:/core/ui/PageTemplate/drafts",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"  tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "text": "\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"description\">\n<$view field=\"title\"/>\n</$view>\n</$link>\n</div>"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical\" />\n</div>"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/StoryList\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n<div style=\"position: relative;\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">&times;</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$droppable>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n</$droppable>\n</$tiddler>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
        },
        "$:/core/ui/SideBarSegments/page-controls": {
            "title": "$:/core/ui/SideBarSegments/page-controls",
            "tags": "$:/tags/SideBarSegment",
            "text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
        },
        "$:/core/ui/SideBarSegments/search": {
            "title": "$:/core/ui/SideBarSegments/search",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-subtitle": {
            "title": "$:/core/ui/SideBarSegments/site-subtitle",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-title": {
            "title": "$:/core/ui/SideBarSegments/site-title",
            "tags": "$:/tags/SideBarSegment",
            "text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
        },
        "$:/core/ui/SideBarSegments/tabs": {
            "title": "$:/core/ui/SideBarSegments/tabs",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</div>\n"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "caption": "{{$:/language/TagManager/Caption}}",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$ $(userClass)$\n\\end\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">> userClass={{!!class}}><$tiddler tiddler=<<currentTiddler>>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$vars>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\whitespace trim\n\\define newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultMoreSidebarTab": {
            "title": "$:/config/DefaultMoreSidebarTab",
            "text": "$:/core/ui/MoreSideBar/Tags"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/webp": {
            "title": "$:/config/EditorTypeMappings/image/webp",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heic": {
            "title": "$:/config/EditorTypeMappings/image/heic",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heif": {
            "title": "$:/config/EditorTypeMappings/image/heif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/NewImageType": {
            "title": "$:/config/NewImageType",
            "text": "jpeg"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "https://tiddlywiki.com/library/v5.1.19/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/new-image": {
            "title": "$:/config/ShortcutInfo/new-image",
            "text": "{{$:/language/Buttons/NewImage/Hint}}"
        },
        "$:/config/ShortcutInfo/new-journal": {
            "title": "$:/config/ShortcutInfo/new-journal",
            "text": "{{$:/language/Buttons/NewJournal/Hint}}"
        },
        "$:/config/ShortcutInfo/new-tiddler": {
            "title": "$:/config/ShortcutInfo/new-tiddler",
            "text": "{{$:/language/Buttons/NewTiddler/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Tags/MinLength": {
            "title": "$:/config/Tags/MinLength",
            "text": "0"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-mac/new-image": {
            "title": "$:/config/shortcuts-mac/new-image",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-mac/new-journal": {
            "title": "$:/config/shortcuts-mac/new-journal",
            "text": "ctrl-J"
        },
        "$:/config/shortcuts-mac/new-tiddler": {
            "title": "$:/config/shortcuts-mac/new-tiddler",
            "text": "ctrl-N"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts-not-mac/new-image": {
            "title": "$:/config/shortcuts-not-mac/new-image",
            "text": "alt-I"
        },
        "$:/config/shortcuts-not-mac/new-journal": {
            "title": "$:/config/shortcuts-not-mac/new-journal",
            "text": "alt-J"
        },
        "$:/config/shortcuts-not-mac/new-tiddler": {
            "title": "$:/config/shortcuts-not-mac/new-tiddler",
            "text": "alt-N"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/linkify": {
            "title": "$:/config/shortcuts/linkify",
            "text": "alt-shift-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/shortcuts/transcludify": {
            "title": "$:/config/shortcuts/transcludify",
            "text": "alt-shift-T"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<div style=\"background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/> \n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/copy-to-clipboard": {
            "title": "$:/core/macros/copy-to-clipboard",
            "tags": "$:/tags/Macro",
            "text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
        },
        "$:/core/macros/diff": {
            "title": "$:/core/macros/diff",
            "tags": "$:/tags/Macro",
            "text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "created": "20170715180840889",
            "modified": "20170715180914005",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\")\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\">\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\">\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\">\n$(actions)$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker(actions)\n<$set name=\"actions\" value=\"\"\"$actions$\"\"\">\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{$:/temp/NewTagName}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n$actions$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$list filter=\"[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</div>\n</$reveal>\n</div>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/> <$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "title": "$:/core/macros/timeline",
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}} excluded=\"\"\"[enlist<__exclude__>] -[<__tag__>]\"\"\">\n      <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item\" value=\"toc-item-selected\">\n        <li class=<<toc-item-class>>>\n          <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n            <<toc-caption>>\n          </$list>\n          <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n        </li>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<$macrocall $name=\"toc-body\"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n    </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> excluded=\"\"\"[enlist<__exclude__>] -[<__tag__>]\"\"\" path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <ol class=\"tc-toc toc-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n        <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> excluded=\"\"\"[enlist<__exclude__>] -[<__tag__>]\"\"\" path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n        <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=<<__selectedTiddler__>>>\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]field:title<__selectedTiddler__>]\"/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=<<__template__>>>\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tree": {
            "title": "$:/core/macros/tree",
            "tags": "$:/tags/Macro",
            "text": "\\define leaf-link(full-title, chunk)\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix, chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix, chunk)\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}}/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix)\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore[/]sort[]!suffix[/]]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore[/]sort[]suffix[/]]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>>/>\n</div>\n</div>\n\\end\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/snippets/peek-stylesheets": {
            "title": "$:/snippets/peek-stylesheets",
            "text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/config/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/config/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/SideBarSegment": {
            "title": "$:/tags/SideBarSegment",
            "list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        }
    }
}
<svg class="tc-image-cancel-button tc-image-button" viewBox="0 0 20 20
" width="22pt" height="22pt">
<rect width="20" height="20" style="fill:yellow;stroke:black;stroke-width:3" />
</svg>
<svg class="tc-image-cancel-button tc-image-button" viewBox="0 0 20 20
" width="22pt" height="22pt">
<rect width="20" height="20" style="fill:red;stroke:black;stroke-width:3" />
</svg>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="replace-selection"
	text=<<now YYYY年0MM月0DD日pm0hh12:0mm:0ss>>
/>
{
    "易中天": "1",
    "高阳": "1",
    "J.D. 万斯": "1",
    "Jay Taylor": "1",
    "关正文": "1",
    "毛姆": "1",
    "梅鼎祚": "1",
    "李渔": "1",
    "张岱": "1",
    "Sir. Ernst Gombrich": "1",
    "汪曾祺": "1",
    "江盈科": "1",
    "沈君山": "1",
    "连阔如": "1",
    "林语堂": "1",
    "罗伯特·M·波西格": "1",
    "理查德·耶茨": "1",
    "梁启超": "1",
    "严歌苓": "1",
    "阿什利·万斯": "1",
    "欧阳修": "1",
    "南怀瑾": "1",
    "阿里·沙维特": "1",
    "王国维": "1",
    "乐钧": "1",
    "齐如山": "1",
    "袁枚": "1",
    "丹纳": "1",
    "傅雷": "1",
    "张中行": "1",
    "许慎": "1",
    "徐明星": "1",
    "瑞·达利欧": "1",
    "多人": "1",
    "郝明义": "1",
    "查尔斯·范多伦": "1",
    "曹雪芹": "1",
    "贝奈戴托·克罗齐": "1",
    "史景迁": "1",
    "杉野干人 ": "1",
    "梁遇春": "1",
    "斯蒂芬·茨威格": "1",
    "豪尔赫·路易斯·博尔赫斯": "1",
    "加西亚·马尔克斯": "1",
    "托马斯.布朗": "1",
    "李石岑": "1",
    "鲁迅": "1",
    "苏东坡": "1",
    "陈渠珍 ": "1",
    "理查德·费曼": "1",
    "克利夫顿·费迪曼": "1",
    "尼科洛·马基雅维里": "1",
    "迈克尔·麦尔 ": "1",
    "诺贝特·埃利亚斯 ": "1",
    "葛兆光": "1",
    "松田行正": "1",
    "庄和诚": "1",
    "熊培云": "1",
    "梁文道": "1",
    "汪兆骞": "1",
    "H.W.布兰兹": "1",
    "村上春树": "1",
    "冶文彪": "1",
    "牟宗三": "1",
    "周振甫": "1",
    "叔本华": "1",
    "张贤亮": "1",
    "查建英": "1",
    "许晖": "1",
    "胡适": "1",
    "董玥": "1",
    "张北海": "1",
    "西尔维亚·比奇": "1",
    "路遥": "1",
    "孔亚雷": "1",
    "扶霞·邓洛普": "1",
    "盖伊·特立斯": "1",
    "蒋方舟": "1",
    "刘华杰": "1",
    "蒋廷黻": "1",
    "埃布鲁·宝雅": "1",
    "菲利普·胡克": "1",
    "保罗·科埃略": "1",
    "司马光": "1",
    "安托万·德·圣-埃克苏佩里": "1",
    "安迪·莱利": "1",
    "刘夙": "1",
    "马克斯·苏萨克": "1",
    "海莲·汉芙 ": "1",
    "翁贝托·艾柯": "1",
    "朱岳": "1",
    "N/A": "1",
    "阿来": "1",
    "卢梭": "1",
    "葛小佳": "1",
    "肯尼斯·格雷厄姆": "1",
    "纳西姆·尼古拉斯·塔勒布": "1",
    "李劼": "1",
    "安妮·杜克": "1",
    "安东尼奥·G·伊图尔": "1",
    "加文·弗朗西斯": "1",
    "弗朗茨·卡夫卡 ": "1",
    "汤姆·哈泽德": "1",
    "悉达多·穆克吉": "1",
    "埃默·托尔斯": "1",
    "克里斯汀·金博尔": "1",
    "托马斯·索维尔": "1",
    "老舍": "1",
    "赫尔曼·麦尔维尔": "1",
    "阿贝尔·加缪": "1",
    "古拉斯·费恩": "1",
    "帕·聚斯金德": "1",
    "许子东": "1",
    "荣格": "1",
    "玛蒂娜·莱维特": "1",
    "蒂姆·哈福德": "1",
    "特兰·格里芬": "1",
    "张辉": "1",
    "史军": "1",
    "威尔·施瓦尔贝": "1",
    "哈珀·李": "1",
    "陈嘉映": "1",
    "奥根·赫立格尔": "1",
    "托妮·莫里森": "1",
    "萨米耶·德梅斯特": "1",
    "以赛亚·伯林": "1",
    "杰克·伦敦": "1",
    "萨米尔·奥卡沙": "1",
    "托马斯·福斯特": "1",
    "张斌": "1",
    "丹尼尔·查莫维茨": "1",
    "江怡": "1",
    "罗杰·夏蒂埃": "1",
    "理查德·梅比": "1",
    "丹尼尔·卡尼曼": "1",
    "马修·巴特尔斯": "1",
    "王学泰": "1",
    "乔·昆南": "1",
    "保罗·格雷厄姆": "1",
    "帕斯卡": "1",
    "诺曼·道伊奇": "1",
    "田艺苗": "1",
    "罗伯特·阿克塞尔罗德": "1",
    "马炜梁": "1",
    "米哈里·契克森米哈赖": "1",
    "斯蒂芬妮·萨顿": "1",
    "埃特加·凯雷特": "1",
    "R.J.帕拉西": "1",
    "稻盛和夫": "1",
    "孔飞力": "1",
    "菲利普·津巴多": "1",
    "德内拉·梅多斯": "1",
    "大卫·E.费什曼": "1",
    "乔治·巴塔耶": "1",
    "玛乔丽·谢弗": "1",
    "耶日·科辛斯基": "1",
    "戴维·R. 蒙哥马利": "1",
    "格雷厄姆·普里斯特": "1",
    "米歇尔·渥克": "1",
    "马修·萨伊德": "1",
    "纳博科夫": "1",
    "张玮": "1",
    "芭芭拉·金索沃": "1",
    "彼得·渥雷本": "1",
    "拉兹洛·博克": "1",
    "锺叔河": "1",
    "托马斯·沃尔夫": "1",
    "唐克扬": "1",
    "亨利·M·罗伯特 ": "1",
    "马丁·布莱泽": "1",
    "欧内斯特·海明威": "1",
    "冯道": "1",
    "尼尔·麦格雷戈": "1"
}
{
    "历史小说": "1",
    "读书随笔": "1",
    "古代文学": "1",
    "回忆录": "1",
    "人物传记": "1",
    "外国文学": "1",
    "中国现当代文学": "1",
    "社会科学": "1",
    "纪实文学": "1",
    "国家与民族": "1",
    "自然科学": "1",
    "历史研究": "1",
    "趣味生活": "1",
    "经济生活": "1",
    "认知哲学": "1",
    "艺术美学": "1",
    "宗教哲学": "1"
}
{
    "中国大陆": "1",
    "中国台湾": "1",
    "美国": "1",
    "法国": "1",
    "明代": "1",
    "清代": "1",
    "英国": "1",
    "以色列": "1",
    "民国": "1",
    "汉朝": "1",
    "意大利": "1",
    "日本": "1",
    "奥地利": "1",
    "阿根廷": "1",
    "哥伦比亚": "1",
    "秦代": "1",
    "德国": "1",
    "香港": "1",
    "宋代": "1",
    "西班牙": "1",
    "土耳其": "1",
    "N/A": "1",
    "巴西": "1",
    "澳大利亚": "1",
    "瑞士": "1"
}
{
    "已读": "1",
    "正读": "1",
    "想读": "1",
    "Task": "1"
}
{
    "文言津逮": "1",
    "经典小品": "1",
    "学术": "1",
    "N/A": "1"
}
 ㋡
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
/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url(data:application/font-woff;base64,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) format("woff");  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eeeeee;
  border-radius: .1em;
}
.fa-pull-left {
  float: left;
}
.fa-pull-right {
  float: right;
}
.fa.fa-pull-left {
  margin-right: .3em;
}
.fa.fa-pull-right {
  margin-left: .3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #ffffff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook-f:before,
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-feed:before,
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before,
.fa-gratipay:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper-pp:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
.fa-buysellads:before {
  content: "\f20d";
}
.fa-connectdevelop:before {
  content: "\f20e";
}
.fa-dashcube:before {
  content: "\f210";
}
.fa-forumbee:before {
  content: "\f211";
}
.fa-leanpub:before {
  content: "\f212";
}
.fa-sellsy:before {
  content: "\f213";
}
.fa-shirtsinbulk:before {
  content: "\f214";
}
.fa-simplybuilt:before {
  content: "\f215";
}
.fa-skyatlas:before {
  content: "\f216";
}
.fa-cart-plus:before {
  content: "\f217";
}
.fa-cart-arrow-down:before {
  content: "\f218";
}
.fa-diamond:before {
  content: "\f219";
}
.fa-ship:before {
  content: "\f21a";
}
.fa-user-secret:before {
  content: "\f21b";
}
.fa-motorcycle:before {
  content: "\f21c";
}
.fa-street-view:before {
  content: "\f21d";
}
.fa-heartbeat:before {
  content: "\f21e";
}
.fa-venus:before {
  content: "\f221";
}
.fa-mars:before {
  content: "\f222";
}
.fa-mercury:before {
  content: "\f223";
}
.fa-intersex:before,
.fa-transgender:before {
  content: "\f224";
}
.fa-transgender-alt:before {
  content: "\f225";
}
.fa-venus-double:before {
  content: "\f226";
}
.fa-mars-double:before {
  content: "\f227";
}
.fa-venus-mars:before {
  content: "\f228";
}
.fa-mars-stroke:before {
  content: "\f229";
}
.fa-mars-stroke-v:before {
  content: "\f22a";
}
.fa-mars-stroke-h:before {
  content: "\f22b";
}
.fa-neuter:before {
  content: "\f22c";
}
.fa-genderless:before {
  content: "\f22d";
}
.fa-facebook-official:before {
  content: "\f230";
}
.fa-pinterest-p:before {
  content: "\f231";
}
.fa-whatsapp:before {
  content: "\f232";
}
.fa-server:before {
  content: "\f233";
}
.fa-user-plus:before {
  content: "\f234";
}
.fa-user-times:before {
  content: "\f235";
}
.fa-hotel:before,
.fa-bed:before {
  content: "\f236";
}
.fa-viacoin:before {
  content: "\f237";
}
.fa-train:before {
  content: "\f238";
}
.fa-subway:before {
  content: "\f239";
}
.fa-medium:before {
  content: "\f23a";
}
.fa-yc:before,
.fa-y-combinator:before {
  content: "\f23b";
}
.fa-optin-monster:before {
  content: "\f23c";
}
.fa-opencart:before {
  content: "\f23d";
}
.fa-expeditedssl:before {
  content: "\f23e";
}
.fa-battery-4:before,
.fa-battery:before,
.fa-battery-full:before {
  content: "\f240";
}
.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "\f241";
}
.fa-battery-2:before,
.fa-battery-half:before {
  content: "\f242";
}
.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "\f243";
}
.fa-battery-0:before,
.fa-battery-empty:before {
  content: "\f244";
}
.fa-mouse-pointer:before {
  content: "\f245";
}
.fa-i-cursor:before {
  content: "\f246";
}
.fa-object-group:before {
  content: "\f247";
}
.fa-object-ungroup:before {
  content: "\f248";
}
.fa-sticky-note:before {
  content: "\f249";
}
.fa-sticky-note-o:before {
  content: "\f24a";
}
.fa-cc-jcb:before {
  content: "\f24b";
}
.fa-cc-diners-club:before {
  content: "\f24c";
}
.fa-clone:before {
  content: "\f24d";
}
.fa-balance-scale:before {
  content: "\f24e";
}
.fa-hourglass-o:before {
  content: "\f250";
}
.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "\f251";
}
.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "\f252";
}
.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "\f253";
}
.fa-hourglass:before {
  content: "\f254";
}
.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "\f255";
}
.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "\f256";
}
.fa-hand-scissors-o:before {
  content: "\f257";
}
.fa-hand-lizard-o:before {
  content: "\f258";
}
.fa-hand-spock-o:before {
  content: "\f259";
}
.fa-hand-pointer-o:before {
  content: "\f25a";
}
.fa-hand-peace-o:before {
  content: "\f25b";
}
.fa-trademark:before {
  content: "\f25c";
}
.fa-registered:before {
  content: "\f25d";
}
.fa-creative-commons:before {
  content: "\f25e";
}
.fa-gg:before {
  content: "\f260";
}
.fa-gg-circle:before {
  content: "\f261";
}
.fa-tripadvisor:before {
  content: "\f262";
}
.fa-odnoklassniki:before {
  content: "\f263";
}
.fa-odnoklassniki-square:before {
  content: "\f264";
}
.fa-get-pocket:before {
  content: "\f265";
}
.fa-wikipedia-w:before {
  content: "\f266";
}
.fa-safari:before {
  content: "\f267";
}
.fa-chrome:before {
  content: "\f268";
}
.fa-firefox:before {
  content: "\f269";
}
.fa-opera:before {
  content: "\f26a";
}
.fa-internet-explorer:before {
  content: "\f26b";
}
.fa-tv:before,
.fa-television:before {
  content: "\f26c";
}
.fa-contao:before {
  content: "\f26d";
}
.fa-500px:before {
  content: "\f26e";
}
.fa-amazon:before {
  content: "\f270";
}
.fa-calendar-plus-o:before {
  content: "\f271";
}
.fa-calendar-minus-o:before {
  content: "\f272";
}
.fa-calendar-times-o:before {
  content: "\f273";
}
.fa-calendar-check-o:before {
  content: "\f274";
}
.fa-industry:before {
  content: "\f275";
}
.fa-map-pin:before {
  content: "\f276";
}
.fa-map-signs:before {
  content: "\f277";
}
.fa-map-o:before {
  content: "\f278";
}
.fa-map:before {
  content: "\f279";
}
.fa-commenting:before {
  content: "\f27a";
}
.fa-commenting-o:before {
  content: "\f27b";
}
.fa-houzz:before {
  content: "\f27c";
}
.fa-vimeo:before {
  content: "\f27d";
}
.fa-black-tie:before {
  content: "\f27e";
}
.fa-fonticons:before {
  content: "\f280";
}
.fa-reddit-alien:before {
  content: "\f281";
}
.fa-edge:before {
  content: "\f282";
}
.fa-credit-card-alt:before {
  content: "\f283";
}
.fa-codiepie:before {
  content: "\f284";
}
.fa-modx:before {
  content: "\f285";
}
.fa-fort-awesome:before {
  content: "\f286";
}
.fa-usb:before {
  content: "\f287";
}
.fa-product-hunt:before {
  content: "\f288";
}
.fa-mixcloud:before {
  content: "\f289";
}
.fa-scribd:before {
  content: "\f28a";
}
.fa-pause-circle:before {
  content: "\f28b";
}
.fa-pause-circle-o:before {
  content: "\f28c";
}
.fa-stop-circle:before {
  content: "\f28d";
}
.fa-stop-circle-o:before {
  content: "\f28e";
}
.fa-shopping-bag:before {
  content: "\f290";
}
.fa-shopping-basket:before {
  content: "\f291";
}
.fa-hashtag:before {
  content: "\f292";
}
.fa-bluetooth:before {
  content: "\f293";
}
.fa-bluetooth-b:before {
  content: "\f294";
}
.fa-percent:before {
  content: "\f295";
}
.fa-gitlab:before {
  content: "\f296";
}
.fa-wpbeginner:before {
  content: "\f297";
}
.fa-wpforms:before {
  content: "\f298";
}
.fa-envira:before {
  content: "\f299";
}
.fa-universal-access:before {
  content: "\f29a";
}
.fa-wheelchair-alt:before {
  content: "\f29b";
}
.fa-question-circle-o:before {
  content: "\f29c";
}
.fa-blind:before {
  content: "\f29d";
}
.fa-audio-description:before {
  content: "\f29e";
}
.fa-volume-control-phone:before {
  content: "\f2a0";
}
.fa-braille:before {
  content: "\f2a1";
}
.fa-assistive-listening-systems:before {
  content: "\f2a2";
}
.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "\f2a3";
}
.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "\f2a4";
}
.fa-glide:before {
  content: "\f2a5";
}
.fa-glide-g:before {
  content: "\f2a6";
}
.fa-signing:before,
.fa-sign-language:before {
  content: "\f2a7";
}
.fa-low-vision:before {
  content: "\f2a8";
}
.fa-viadeo:before {
  content: "\f2a9";
}
.fa-viadeo-square:before {
  content: "\f2aa";
}
.fa-snapchat:before {
  content: "\f2ab";
}
.fa-snapchat-ghost:before {
  content: "\f2ac";
}
.fa-snapchat-square:before {
  content: "\f2ad";
}
.fa-pied-piper:before {
  content: "\f2ae";
}
.fa-first-order:before {
  content: "\f2b0";
}
.fa-yoast:before {
  content: "\f2b1";
}
.fa-themeisle:before {
  content: "\f2b2";
}
.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "\f2b3";
}
.fa-fa:before,
.fa-font-awesome:before {
  content: "\f2b4";
}
.fa-handshake-o:before {
  content: "\f2b5";
}
.fa-envelope-open:before {
  content: "\f2b6";
}
.fa-envelope-open-o:before {
  content: "\f2b7";
}
.fa-linode:before {
  content: "\f2b8";
}
.fa-address-book:before {
  content: "\f2b9";
}
.fa-address-book-o:before {
  content: "\f2ba";
}
.fa-vcard:before,
.fa-address-card:before {
  content: "\f2bb";
}
.fa-vcard-o:before,
.fa-address-card-o:before {
  content: "\f2bc";
}
.fa-user-circle:before {
  content: "\f2bd";
}
.fa-user-circle-o:before {
  content: "\f2be";
}
.fa-user-o:before {
  content: "\f2c0";
}
.fa-id-badge:before {
  content: "\f2c1";
}
.fa-drivers-license:before,
.fa-id-card:before {
  content: "\f2c2";
}
.fa-drivers-license-o:before,
.fa-id-card-o:before {
  content: "\f2c3";
}
.fa-quora:before {
  content: "\f2c4";
}
.fa-free-code-camp:before {
  content: "\f2c5";
}
.fa-telegram:before {
  content: "\f2c6";
}
.fa-thermometer-4:before,
.fa-thermometer:before,
.fa-thermometer-full:before {
  content: "\f2c7";
}
.fa-thermometer-3:before,
.fa-thermometer-three-quarters:before {
  content: "\f2c8";
}
.fa-thermometer-2:before,
.fa-thermometer-half:before {
  content: "\f2c9";
}
.fa-thermometer-1:before,
.fa-thermometer-quarter:before {
  content: "\f2ca";
}
.fa-thermometer-0:before,
.fa-thermometer-empty:before {
  content: "\f2cb";
}
.fa-shower:before {
  content: "\f2cc";
}
.fa-bathtub:before,
.fa-s15:before,
.fa-bath:before {
  content: "\f2cd";
}
.fa-podcast:before {
  content: "\f2ce";
}
.fa-window-maximize:before {
  content: "\f2d0";
}
.fa-window-minimize:before {
  content: "\f2d1";
}
.fa-window-restore:before {
  content: "\f2d2";
}
.fa-times-rectangle:before,
.fa-window-close:before {
  content: "\f2d3";
}
.fa-times-rectangle-o:before,
.fa-window-close-o:before {
  content: "\f2d4";
}
.fa-bandcamp:before {
  content: "\f2d5";
}
.fa-grav:before {
  content: "\f2d6";
}
.fa-etsy:before {
  content: "\f2d7";
}
.fa-imdb:before {
  content: "\f2d8";
}
.fa-ravelry:before {
  content: "\f2d9";
}
.fa-eercast:before {
  content: "\f2da";
}
.fa-microchip:before {
  content: "\f2db";
}
.fa-snowflake-o:before {
  content: "\f2dc";
}
.fa-superpowers:before {
  content: "\f2dd";
}
.fa-wpexplorer:before {
  content: "\f2de";
}
.fa-meetup:before {
  content: "\f2e0";
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
UA-115820968-1
{
    "tiddlers": {
        "Untitled": {
            "title": "Untitled",
            "text": "克拉克基本定律"
        }
    }
}
yes
no
$:/languages/zh-Hans
{
    "tiddlers": {
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "高级查找"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "高级查找"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "放弃对此条目的更改"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "克隆"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "克隆此条目"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "关闭"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "关闭此条目"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "全部关闭"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "关闭所有条目"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "关闭其他"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "关闭其他条目"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "控制台"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "开启控制台"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "复制到剪贴板"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "将此文本复制到剪贴板"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "删除"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "删除此条目"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "编辑"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "编辑此条目"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "加密"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "设置或清除保存此维基的密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "清除密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "清除密码且不加密保存此维基"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "设置密码"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "设置加密保存此维基的密码"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "导出条目"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "导出条目"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "收合条目"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "收合此条目的内容"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "展开条目"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "展开此条目的内容"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "收合其他条目"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "收合其他已开启条目的内容"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "收合所有条目"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "收合所有已开启条目的内容"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "收合栏"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "可选的收合与展开条目的长条按钮"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "展开所有条目"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "展开所有已开启条目的内容"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "全屏幕"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "进入或离开全屏模式"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "帮助"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "显示帮助面板"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "首页"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "开启首页条目"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "导入"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "导入许多类型的文件包括文本、图像、TiddlyWiki 或 JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "信息"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "显示此条目的信息"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "语言"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "选择用户介面语言"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "条目管理器"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "开启条目管理器"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "更多"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "更多动作"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "添加子条目"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "创建一个标签为此条目名称的新条目"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "添加日志"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "创建一个新的日志条目"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "添加子日志"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "创建一个标签含此条目名称的新日志条目"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "添加图像"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "创建一个新的图像条目"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "添加 Markdown 条目"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "创建一个新的 Markdown 条目"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "添加条目"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "创建一个新的条目"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "开启于新窗口"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "在新窗口中开启条目"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "选择调色板"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "引用链接"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "设置浏览器网址栏为直接链接到此条目"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "永久链接"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "设置浏览器网址栏为直接链接到当前所有已开启条目"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "打印页面"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "打印当前页面"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "刷新"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "执行维基的完全刷新"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "确定"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "确定对此条目的更改"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "保存变更"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "保存变更"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "选择查看条目的视觉效果"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "标签管理"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "标签管理"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "时间戳记"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "选择修改是否更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "时间戳记开启"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "条目被修改时,更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "时间戳记关闭"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "条目被修改时,不更新时间戳记"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "选择布景主题"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "粗体"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "套用粗体格式于所选文本"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "清除"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "清除图像为纯色"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "编辑器高度"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "自动调整高度以适合内容"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "固定高度︰"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "选择文本编辑器的高度"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "剪切"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "执行剪切"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "宏的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "新条目的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "替换剪切的文本为:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "宏"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "链接"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "嵌入"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "将新条目的标签设为此条目的名称"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "警示:条目已经存在"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "剪切所选文本到一个新条目"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "标题 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "套用标题级别 1 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "标题 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "套用标题级别 2 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "标题 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "套用标题级别 3 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "标题 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "套用标题级别 4 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "标题 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "套用标题级别 5 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "标题 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "套用标题级别 6 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "斜体"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "套用斜体格式于所选文本"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "线宽"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "设置绘画的线条宽度"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "链接"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "创建维基文字链接"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "维基链接"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "套用维基链接于所选文字"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "符号清单"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "套用符号清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "数字清单"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "套用数字清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "等宽区块"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "套用等宽区块格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "等宽"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "套用等宽字符格式于所选文本"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "不透明度"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "设置绘画的不透明度"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "绘画颜色"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "设置绘画的颜色"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "图片"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "插入图片"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "预览"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "显示预览窗格"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "预览类型"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "选择预览类型"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "引言"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "套用引言文本格式于包含所选文本的列"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "向左旋转"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "图像向左旋转 90 度"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "图像大小"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "高度︰"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "调整图像的大小"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "宽度:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "设置图像的大小"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "印记"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "添加您自己的"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "插入一个预配置的文本片段"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "在选单中显示的标题"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。"
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "删除线"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "套用删除线格式于所选文本"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "下标"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "套用下标格式于所选文本"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "上标"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "套用上标格式于所选文本"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "嵌入"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "套用嵌入于所选文字"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "下划线"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "套用下划线格式于所选文本"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "关于此 TiddlyWiki 的内部信息"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "视觉外观"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "定制您的 TiddlyWiki 外观。"
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "动画持续时间:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "基本"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "标题含空白时请使用 &#91;&#91;双中括弧&#93;&#93;,或者您可用 <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">保留开启中的条目顺序</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "首页:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "默认开启的条目:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "您好!当前的语言:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "新日志条目的标签"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "新日志条目的内容"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "新日志条目的名称"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "新条目的名称"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "被覆写的默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "副标题:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "系统条目数量:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "标签数量:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "一般条目数量:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "标题:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "编辑者署名:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki 版本:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "编辑器类型"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "编辑器"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "这些条目决定使用哪个编辑器来编辑特定条目类型。"
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "类型"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "信息"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "有关此 TiddlyWiki 的信息"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "在此输入快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "添加快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "管理键盘快捷键分配"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "尚无指定快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "删除快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "所有平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "仅 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "仅非 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "仅 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "仅非 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "仅 Windows 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "仅非 Windows 平台"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "已加载的模块"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "这些是当前已加载的模块之源码条目。斜体的模块则无源码条目,通常是因为它们是在引导过程中设置。"
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "复制"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "建议您修改前先复制此默认调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "此默认调色板已被修改过"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "编辑"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "重置"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "隐藏编辑器"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "当前的调色板:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "显示编辑器"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "从官方插件库安装插件"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "获取更多插件"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "此插件已经安装版本 <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "禁用"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "重新加载页面时禁用此插件"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(已禁用)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "无"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "启用"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "重新加载页面时启用此插件"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "安装"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "当前已安装的插件:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "语言"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "语言包插件"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "无 ''\"<$text text=<<currentTab>>/>\"''"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "未提供信息"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "尚未安装此插件"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "开启插件程式库"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "关闭插件程式库"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "重新安装"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "布景主题插件"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "解析"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text=\"TiddlyWiki\"/> 正常运作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢复正常操作。"
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "区块解析规则"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "内联解析规则"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "编译指示解析规则"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "允许下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "启用下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "下载保存模块"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "这些设置适用于兼容 HTML5 的下载保存模块"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "通用"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "这些设置适用于所有已载入的保存模块"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "高级设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "备份文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "备份"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot 保存模块"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "上传文件名"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//默认之服务器网址 `http://<wikiname>.tiddlyspot.com/store.cgi`,可改为定制之服务器网址,例如 `http://example.com/store.php`。//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "密码"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "服务器网址"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "上传文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "用户"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "自动保存"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "不要自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "当使用支持的保存模块时,在编辑期间尝试自动保存变更"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "驼峰式维基链接"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "启用自动驼峰式链接"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "设置"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "默认侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "指定默认显示的侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "更多侧边栏的默认页签"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "指定默认显示的更多侧栏页签"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "启用或禁用编辑器工具栏︰"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "显示编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "条目信息面板模式"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "控制条目信息面板何时关闭︰"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "条目信息面板自动关闭"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "条目信息面板保持打开状态,直到明确关闭"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "这些高级设置让您定制 TiddlyWiki 的行为。"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "条目开启行为"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "从故事河//中//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "从故事河//外//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "开启于当前条目之上"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "开启于当前条目之下"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "开启于故事河的顶端"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "开启于故事河的底部"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "维基链接"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "选择是否要链接到尚未存在的条目"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "启用链接到佚失条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "网址栏导览"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "在浏览器网址栏导览到条目时的行为:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "不更新网址栏"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "包含目标条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "包括目标条目和当前已开启的条目序列"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "历史记录导览"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "当导览到条目时,更新浏览器历史记录:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "不更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "引用链接/固定链接 模式"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "选择 引用链接/固定链接 的处理方式:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "将 引用链接/固定链接 网址复制到剪贴板"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "以 引用链接/固定链接 更新网址栏"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "性能检测"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "启用性能检测"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "工具栏按钮样式"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "选择工具栏按钮的样式:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "无边框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "方框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "圆形"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "工具栏按钮"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "默认的工具栏按钮外观:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "包含图标"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "包含文本"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "条目标题"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "可选地显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "不显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "显示条目标题为链接"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "当前的查看模式:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "样式表"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "全部展开"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "这是当前标签为 <<tag \"$:/tags/Stylesheet\">> 的样式表条目呈现的 CSS"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "复原"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "当前的布景主题:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "条目栏位"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。"
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "编辑工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "选择将显示哪些工具栏按钮"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "页面工具栏"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "查看工具栏"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "下载完整副本"
        },
        "$:/core/zh-Hans/readme": {
            "title": "$:/core/zh-Hans/readme",
            "text": "此插件包含 TiddlyWiki 的核心组件,包括:\n\n* JavaScript 代码模块\n* 图标\n* 创建 TiddlyWiki 的用户介面所需的模板\n* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译\n"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "周日"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "周一"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "周二"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "周三"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "周四"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "周五"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "周六"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "一月"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "二月"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "三月"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "四月"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "五月"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "六月"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "七月"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "八月"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "九月"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "十月"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "十一月"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "十二月"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "上午"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "下午"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "日"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "一"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "二"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "三"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "四"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "五"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "六"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "01月"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "02月"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "03月"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "04月"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "05月"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "06月"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "07月"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "08月"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "09月"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "10月"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "11月"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "12月"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> 天后"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> 小时后"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> 分钟后"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> 个月后"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 秒后"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> 秒后"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> 年后"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> 天前"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> 小时前"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> 分钟前"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> 个月前"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 秒前"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> 秒前"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> 年前"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "''all'' 筛选器算子的子算子。"
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "动画模块包含可用于 RevealWidget 的动画。"
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "定义内置 HTTP 服务器对请求的身份验证方式。"
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "一个位图编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "可于 Node.js 执行的指令。"
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "加入 `$tw.config` 的数据。"
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "个别筛选器算子方法。"
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "加入 `$tw` 的全域数据。"
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。"
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "''is'' 筛选器算子的运算符。"
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "一般用途的 JavaScript 模块的通用模块类型。"
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript ''宏''定义。"
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "不同内容类型的解析器。"
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "定义内置 HTTP 服务器如何处理各个网址格式。"
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "于浏览器保存文件的不同的保存处理方法。"
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "启动时期的功能函数。"
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "查看模式用以自订 list 小部件的动画与行为。"
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "一个文本编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "转换不同内容类型至条目。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "定义个别条目栏位的行为。"
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "添加方法至 `$tw.Tiddler` 原型。"
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "于升级/导入过程中,套用升级处理至条目。"
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "添加方法至 `$tw.utils`。"
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "将特定于 Node.js 的方法添加到 '$tw.utils'。"
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "封装 DOM 渲染和刷新的小部件。"
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "添加方法至 `$tw.Wiki`。"
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "WikiText 解析器的个别的语法规则。"
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "警示背景"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "警示边框"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "警示高亮度"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "警示的低调前景"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "一般背景"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "引言条"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "默认按钮背景"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "默认按钮边框"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "默认按钮前景"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "代码背景"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "代码边框"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "代码前景"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "未保存变更指示器"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "下载按钮背景"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "下载按钮前景"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "拖动区背景"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "拖动区前景"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "下拉背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "下拉边框"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "选定的下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "拖放背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "悬停外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "已造访过的外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "悬停外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "已造访过的外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "外部链结前景"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "一般前景"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "信息框背景"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "信息边框"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "信息框前景"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "模块背景幕"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "模块背景"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "模块边框"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "模块页脚背景"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "模块页脚边框"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "模块标题边框"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "一般低调前景"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "通知背景"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "通知边框"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "页面背景"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "pre 背景"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "pre 边框"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "主颜色"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` 元素背景"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` 元素文本"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "侧边栏按钮前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "悬停侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "侧边栏前景阴影"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "侧边栏前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "悬停侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "侧边栏选定页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "侧边栏页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "侧边栏选定页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "侧边栏页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "侧边栏页签分隔线"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "侧边栏选定页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "侧边栏页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "侧边栏悬停条目链结前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "侧边栏条目链结前景"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "网站标题前景"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "静态警示前景"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "选定的页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "选定的页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "页签分隔线"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "选定的页签前景"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "页签前景"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "表格边框"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "表格页脚背景"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "表格标题背景"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "标签背景"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "标签前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "条目背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "条目边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "悬停的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "选定的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "条目编辑器背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "条目编辑器边框图片"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "条目编辑器边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "条目编辑器中偶数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "条目编辑器中奇数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "条目信息面板背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "条目信息面板边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "条目信息面板页签背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "条目链结背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "条目链结前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "条目副标题前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "条目标题前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "工具栏 '添加条目' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "工具栏 '选项' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "工具栏 '保存' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "工具栏 '资讯' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "工具栏 '编辑' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "工具栏 '关闭' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "工具栏 '删除' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "工具栏 '取消' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "工具栏 '完成  按钮前景"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "未设标签的背景"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "非常低调前景"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和字段,但不能直接编辑内容本身"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "输入此条目的内容"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "输出"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "删除字段"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "删除字段"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "字段列表"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "显示字段列表"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "系统字段"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "使用者字段"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "字段名称"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "添加字段:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "字段内容"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "标签名称"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "标签清单"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "显示标签清单"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "请注意,避免在条目名称中使用这些字符:<<bad-chars>>"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "目标条目已经存在"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "将在其他条目的 //tags// 和 //list// 字段中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>''"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "下列对此条目的引用,不会自动更新:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "内容类型清单"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "显示内容类型清单"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "内容类型"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "类型:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "静态 HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON 文件"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV 文件"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" 文件"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "外部图像条目的完整的 URI"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "条目的来源集的名称"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "显示于页签或按钮上的标题文字"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "条目的 CSS 颜色值"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "负责[[警示条目|AlertMechanism]]的组件名称"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "条目的创建日期"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "条目的创建者"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "插件的相依插件列表"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "插件的说明、描述"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "草稿条目,包含条目的标题、标签、栏位 ..."
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "草稿条目的标题"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "wizard 的注脚"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "于 [[$:/core/templates/static.content]] 使用的临时保存栏位"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "条目的标题含有与条目关联的图标"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "若设为 “yes”,表示条目应该被保存为一个 JavaScript 程序库"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "条目的列表,指定一些条目的标题清单"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则被添加於清单的前端"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "当前条目名称将被添加到条目排序清单的设置条目名称之后,或若此栏位存在但是空的,則被添加於清單的尾端"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "条目的最近修改日期与时间"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "条目的最近修改者"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "具可读性的插件条目的名称"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "插件条目的优先级数值"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "插件条目的类型"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "TiddlyWiki 的发布日期"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "条目存放于服务器中的修订版本"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "条目的网址"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "一个 wizard 的副标题"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "条目的标签清单"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "条目的内文"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "条目的唯一名称"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "条目的内容类型"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "插件的版本信息"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "所有条目,不含系统条目"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "最近修改的条目,包含系统条目"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "最近修改的条目"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "所有标签,不含系统标签"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "缺失条目"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "草稿条目"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "孤立条目"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "系统条目"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "默认条目"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "被覆写的默认条目"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "系统标签"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "故事河中的条目,不含 ~$:/AdvancedSearch"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "非维基文字条目"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群\n\n开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 https://tiddlywiki.com/#GettingStarted\n\n!! 设置此 ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\n请参阅[[控制台|$:/ControlPanel]]查看更多选项。"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "自动执行已配置的命令",
            "text": "生成指定的生成目标为当前 wiki。若未指定任何生成目标,则生成所有可用的目标。\n\n```\n--build <target> [<target> ...]\n```\n\n生成目标在 wiki 文件夹的 `tiddlywiki.info` 文件中定义。\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "清除用于后续加密的密码",
            "text": "清除用于后续加密的密码\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\n用法: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\n可用的命令:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\n取得关于某个命令的详细帮助:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "列出可用的 TiddlyWiki 版本",
            "text": "列出可用版本的名称和描述。您可以用 `--init` 命令创建一个指定版本的新维基。\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "通过网址从维基撷取条目",
            "text": "通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\n \"file\" 和 \"files\" 选项撷取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 \"raw-file\" 和 \"raw-files\" 变选项撷取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。\n\n使用 \"file\" and \"raw-file\" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。\n\n使用 \"files\" 和 \"raw-files\" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 \"remote-server\" 的一组具有字段 \"url\" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。\n\n对于 \"file\" 和 \"files\" 选项,the `<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。\n\n对于所有选项,`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀  `$:/myimports/` 加至每个名称。\n\n于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。\n\n请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。\n\n以下示例从 https://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n以下范例从 https://tiddlywiki.com 取回 \"favicon\" 文件,并将其保存在名为 \"output.ico\" 的文件中。请注意,在 \"--fetch\" 命令中引用的中间条目 \"Icon Tiddler\",因为它被用作转换筛选器来替换预设的名称,而 \"--savetiddler\" 命令没有引号,因为它是直接用作标题。\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "显示 TiddlyWiki 命令的说明",
            "text": "显示命令的帮助文本:\n\n```\n--help [<command>]\n```\n\n若省略命令名称,则显示可用命令的清单。\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "从文件导入条目",
            "text": "从 TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他本机文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\n核心的解串器包括:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\n导入的条目名称,默认为文件名。\n\n编码默认为 \"utf8\",但用于导入二进制文件可以是 \"base64\"。\n\n请注意,TiddlyWiki 不会导入旧版本的已加载插件。\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "初始化一个新的 wiki 文件夹",
            "text": "初始化一个空的 [[WikiFolder|WikiFolders]] 的指定版本的副本。\n\n```\n--init <edition> [<edition> ...]\n```\n\n例如:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\n注意:\n\n* 若有需要,将创建 wiki 文件夹目录\n* 其中 \"edition\" 默认为 ''empty''\n* 若 wiki 文件夹不是空的,则初始化命令将失败\n* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。\n* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)\n* `--editions` 传回所有可用版本的清单。\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "为 TiddlyWiki 提供一个 HTTP 服务器接口",
            "text": "通过 HTTP 提供一个维基服务。\n\nlisten 命令使用[[命名的命令参数|NamedCommandParameters]]:\n\n```\n--listen [<name>=<value>]...\n```\n\n所有参数都是可选的, 具有安全的默认值, 可以按任意顺序指定。认可的参数有:\n\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''path-prefix'' - 可选的路径前缀\n* ''port'' - 侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 \"8080\")\n* ''credentials'' - 凭证 CSV 文件的路径名(相对于维基文件夹)\n* ''anon-username'' - 匿名用户的编辑署名\n* ''username'' - 可选的基本验证用户名称\n* ''password'' - 可选的基本验证密码\n* ''authenticated-user-header'' - 可选的标头名称,用于受信任身份验证\n* ''readers'' - 允许读取此维基的主体,以逗号分隔的清单\n* ''writers'' - 允许写入此维基的主体,以逗号分隔的清单\n* ''csrf-disable'' - 设置为 \"yes\" 以禁用 CSRF 检查 (默认为 \"no\")\n* ''root-tiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''root-render-type'' - 呈现的基本条目的内容类型 (默认为 \"text/plain\")\n* ''root-serve-type'' - 服务的基本条目的内容类型 (默认为 \"text/html\")\n* ''tls-cert'' - TLS 证书文件的路径名(相对于维基文件夹)\n* ''tls-key'' - TLS 密钥文件的路径名(相对于维基文件夹)\n* ''debug-level'' - 可选的调试级别;设置为 \"debug\" 来查看请求的详细信息;(默认为 \"none\")\n\n有关向整个本地网络开启实例的信息,以及可能的安全问题,请参阅 TiddlyWiki.com 的 WebServer 条目。\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "从文件中加载条目",
            "text": "从 TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他本机文件加载条目。应用的处理程序取决于导入文件的扩展名。如果您需要明确指定解串器和编码,请改用 `import` 命令。\n\n```\n--load <filepath>\n--load <dirpath>\n```\n\n从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\n请注意 TiddlyWiki 将不加载旧版本的已挂载的插件。\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "构建升级处理所需的程式库插件",
            "text": "为升级处理构建 `$:/UpgradeLibrary` 条目。\n\n升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。\n\n此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。\n\n```\n--makelibrary <title>\n```\n\n标题参数默认为 `$:/UpgradeLibrary`。\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "无此帮助项目"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "设置后续命令的基准输出文件夹",
            "text": "设置后续命令的基准输出文件夹,默认为该版本文件夹的 `output` 子文件夹。\n\n```\n--output <pathname>\n```\n\n若指定的路径是相对路径,则它是被解析相对于当前的工作文件夹。例如:`--output .` 將輸出文件夹設置為當前工作文件夹。"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "设置用以加密的密码",
            "text": "设置用以加密的密码\n\n```\n--password <password>\n```\n\n''请注意'':这不是用于提供 TiddlyWiki 具有密码保护功能。相反地,请看 [[ServerCommand]] 的密码选项说明。\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "呈现个别条目到文件",
            "text": "呈现由筛选器标识的个别条目,并将结果保存到指定的文件。\n\n可选择性地指定范本条目名称。在此情况下,不是直接呈现每个条目,而是使用设为正在呈现的条目名称的 \"currentTiddler\" 变量,来呈现范本条目。\n\n也可以选择性地指定附加变量的名称和值。\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': 标识要呈现的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]addsuffix[.html]]`,其使用未改变的条目名称为文件名\n* ''template'': 可选的范本,用于呈现每个条目\n* ''render-type'': 可选的呈现类型:`text/html` (默认值) 会传回完整的 HTML 文本,而 `text/plain` 只会传回文本内容 (即其忽略 HTML 标记与其他不可印出的数据)\n* ''name'': 可选的变量名称\n* ''value'': 可选的变量值\n\n默认情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。\n\n附注:\n\n* 输出目录不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正呈现的条目名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--render \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在呈现的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--render` 命令是已弃用的 `--rendertiddler` 和 `--rendertiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- 呈现所有非系统条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称和扩展名 HTML\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "呈现个别条目为指定的内容类型",
            "text": "(请注意:`--rendertiddler` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。\n\n还可以指定一个模板,在这种情况下,\"currentTiddler\" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。\n\n也能可选地指定附加变量的名称与其值。\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>]\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n\n例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "呈现符合筛选条件的条目为指定的内容类型",
            "text": "(请注意:`--rendertiddlers` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\n例如:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n在目标文件夹中的任何文件都会被删除,除非指定 ''noclean'' 旗标。若缺少目标文件夹,则以递归方式创建。"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "将个别原始条目保存到文件",
            "text": "将筛选器标识的个别条目,以原始文本或二进位格式,保存到指定的文件。\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': 标识要保存的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]]`,其使用未改变的条目名称为文件名\n\n附注:\n\n* 输出文件夹不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正保存的条目的名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--save  \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在保存的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--save` 命令是已被弃用的 `--savetiddler` 和 `--savetiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- 保存所有非系统的图像条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "将条目的原始内容保存到一个文件",
            "text": "(请注意:`--savetiddler` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存个别条目的原始文本或二进制格式到指定的文件名。\n\n```\n--savetiddler <title> <filename>\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "将一群条目的原始内容保存到一个文件夹",
            "text": "(请注意:`--savetiddlers` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存一群条目的原始文字或二进制格式到指定的文件夹。\n\n```\n--savetiddlers <filter> <pathname> [noclean]\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。\n\n自动创建在路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "提供一个 HTTP 服务器介面到 TiddlyWiki (已弃用,支持新的 listen 命令)",
            "text": "在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。\n\n提供呈现一个指定条目,也可将个别条目编码成 JSON,且支持基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\n参数说明:\n\n* ''port'' - 要侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 \"8080\")\n* ''root-tiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''root-render-type'' - 呈现的基本条目的内容类型 (默认为 \"text/plain\")\n* ''root-serve-type'' - 服务的基本条目的内容类型 (默认为 \"text/html\")\n* ''username'' - 默认的编辑者署名\n* ''password'' - 可选的基本验证密码\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''path-prefix'' - 可选的路径前缀\n* ''debug-level'' - 可选的调试级别;设置为 \"debug\" 来查看请求的详细信息;(默认为 \"none\")\n\n若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,应只在受信任的网络或 HTTPS 上使用。\n\n例如:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\n若您需要设置主机名称或路径前缀,而不要求输入密码,则可以指定空字符串的使用者名和密码。\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\n使用这样的位址,会将您的系统暴露给本地网络。有关向整个本地网络开启实例的信息,以及可能的安全问题,请参阅 TiddlyWiki.com 的 WebServer 条目。\n\n同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。使用环境变数,有助于将埠号传递给 Node.js 进程。本示例引用一个名为 \"MY_PORT_NUMBER\" 的环境变数:\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "准备用于外部条目",
            "text": "//请注意此命令是试验性的,且可能会更改或在最终定稿前被替换//\n\n设置一群条目的指定栏位到 wikifying 范本条目的结果,其中的  `currentTiddler` 变数设置为各该条目。\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\n参数说明:\n\n* ''filter'' - 受影响的辨识条目的筛选条件\n* ''fieldname'' - 要修改的栏位(默认为 \"text\")\n* ''templatetitle'' - 该条目 wikify 到指定栏位。若为空白或丢失,则删除指定的栏位\n* ''rendertype'' - 要呈现的文本类型(默认为 \"text/plain\"; \"text/html\" 可以用于包含 HTML 标记))\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "从插件解开附属的条目",
            "text": "提取插件的附属条目,将其建立为一般条目:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "触发详细的输出模式",
            "text": "触发显示详细的命令执行过程,可用于调试\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "显示 TiddlyWiki 的版本编号",
            "text": "显示 TiddlyWiki 的版本编号。\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "下列条目已被导入:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "这些条目已备妥导入:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "导入"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "选择"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "状态"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "条目"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "预览:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "文本"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "文本 (原始)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "字段"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "差异"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "差异 (字段)"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "封锁的不兼容或过时插件"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "升级插件,从 <<incoming>> 到 <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "封锁的暂存状态条目"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "封锁的系统条目"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "从 <$text text=<<from>>/> 迁移布景主题"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "此条目包含二进制数据"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:https://tiddlywiki.com/static/Upgrading。"
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "升级"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "全部关闭"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "最近︰"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "您确定要放弃对条目 \"<$text text=<<title>>/>\" 的更改?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "您确定要删除条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "您确定要覆写条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "您即将要编辑默认条目,任何更改将会覆盖默认的系统,使未来的升级不寻常。您确定要编辑 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "计数"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "新条目"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> 个差异"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "拖放到此处 (或按 ESC 键取消)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "取消"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "您要清除密码吗?当保存此维基时,这将删除已套用的加密"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "用户名称"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "密码"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "为此 TiddlyWiki 设置一个新密码"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "重复输入密码"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "密码不匹配"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "设定密码"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "错误"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "服务器上的文件已更改"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "筛选器错误"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "筛选器运算式中的语法错误"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "筛选器错误︰'is' 筛选器运算符的未知操作数"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "加载插件程式库时,发生错误"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "于 transclude 小部件中的递回嵌入错误"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "简要条目清单撷取错误"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "保存到 TWEdit 时,发生错误"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "保存时,发生错误"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest 错误代码"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "内部的 JavaScript 错误"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "栏位名称 \"<$text text=<<fieldName>>/>\" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "登录 TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(无)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "依标签筛选︰"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "反向顺序"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "搜寻"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "搜寻︰"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "条目"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "显示︰"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "排序︰"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "颜色"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "栏位"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(无)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "图标"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "原始文字"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "工具"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified 文字"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "佚失条目 \"<$text text=<<currentTiddler>>/>\" - 点击 {{||$:/core/ui/Buttons/edit}} 可创建此条目"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "否"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "~TiddlyWiki 官方插件程式库"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "此为系统条目"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "包括系统条目"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "颜色"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "计数"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "图标"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "信息"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "标签"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "YYYY年0MM月0DD日 0hh:0mm"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "在此 TiddlyWiki 您有尚未保存的变更"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "是"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "https://tiddlywiki.com/",
            "text": "您的浏览器只支援手动保存。\n\n要保存更动的维基,右键点击下方的下载链结,选择\"下载文件\"或\"保存文件\",然后选择文件夹或文件名。\n\n//您可以藉由按一下 Ctrl 键(Windows)或 options/ alt 键(Mac OS X)中的链接,稍微加速操作。您不会被提示文件夹或文件名,您的浏览器可能无法辨认它的文件名 -- 在做其他任何事之前,您可能需要重新命名扩展名为 `.html` 的文件。//\n\n在智能型手机上,不允许下载文件,但您可以标记链结,然后从一台可以正常保存维基的台式机的维基同步你的书签。"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。\n\n!!! 桌面版浏览器\n\n# 从''文件''菜单点选 ''另存为''\n# 选定文件名及保存位置\n#* 某些浏览器依然需要明确指定文件格式为 ''Webpage, HTML only'' 或类似的。\n# 关闭此页签\n\n!!! 智能手机版浏览器\n\n# 为此页建立书签\n#* 若您已设置 iCloud 或 Google 同步,该书签将自动与之前开启及保存于您电脑的书签同步。\n# 关闭此页签\n\n//若您再次于 Mobile Safari 开启该书签,将会再看到此信息。若要继续使用该文件,只需点击下列 ''关闭'' 按钮//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "日志"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "已保存 wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "开始保存 wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "已复制到剪贴板!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "无法复制到剪贴板!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "列表"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "筛选"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "以[[筛选表达式|https://tiddlywiki.com/static/Filters.html]]查找"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "所有匹配:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "条目名称匹配:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "查找"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "查找文本太短"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "查找默认条目"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "标准"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "查找一般条目"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "系统"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "查找系统条目"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "全部"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "目录"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "草稿"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "探索"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "缺失"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "更多"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "开启"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "孤立"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "最近"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "系统"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "标签"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "未设标签"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "工具"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "类型"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "一个非线性的网页式笔记"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "我的 ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "依标签筛选的条目列表",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "宏的定义",
            "text": "\\define macroName(param1:\"默认值\",param2)\n宏的内容\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "4 x 3 的表格",
            "text": "|! | !一 | !二 | !三 | !四 |\n|! 1| | | | |\n|! 2| | | | |\n|! 3 | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "目录",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "主题调整"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "您可以调整 ''Vanilla'' 布景主题的某些样貌。"
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "选项"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "侧边栏布局"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "固定故事,浮动侧边栏"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "浮动故事,固定侧边栏"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "置顶标题"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "使条目名称\"黏着\"于浏览器窗口的顶端"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "在代码区块中折行"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "设置"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "字型"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "代码字型"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "编辑器字型"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "页面背景图像"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "页面背景图像附属"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "随条目卷动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "固定于窗口"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "页面背景图像大小"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "自动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "覆盖"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "包含"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "大小"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "行高"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "条目本文的字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "条目本文的行高"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "故事左侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "故事河(条目区)的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "故事顶端位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "故事河(条目区)的上边缘与页面顶端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "故事右侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "侧边栏的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "故事的宽度"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "故事河的整体宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "条目宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "在故事河内"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "侧边栏中断点"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "故事河和侧边栏会并排显示的最小页面宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "侧边栏宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "在浮动-固定布局中,侧边栏的宽度"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "无信息"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "插件明细"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "此插件包含以下预设条目:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "默认条目状态"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 不是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "此条目定义于插件 <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "已被一般条目覆写"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "栏位"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "列表"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "此条目无指定列表"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "被列于"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "此条目未出现于其他条目的列表中"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "参照"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "无条目链接至此"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "子条目"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "无任何条目以此条目之标题为标签"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "工具"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript 源码",
            "name": "application/javascript",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON 数据",
            "name": "application/json",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "数据字典",
            "name": "application/x-tiddler-dictionary",
            "group": "开发者"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF 图像",
            "name": "image/gif",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG 图像",
            "name": "image/jpeg",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG 图像",
            "name": "image/png",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "结构式矢量图",
            "name": "image/svg+xml",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "图标",
            "name": "image/x-icon",
            "group": "图像"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "静态样式",
            "name": "text/css",
            "group": "开发者"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML 标记",
            "name": "text/html",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "纯文本",
            "name": "text/plain",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki 2",
            "name": "text/x-tiddlywiki",
            "group": "文本"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "1"
        },
        "$:/languages/zh-Hans/icon": {
            "title": "$:/languages/zh-Hans/icon",
            "type": "image/svg+xml",
            "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1500\" height=\"1000\" viewBox=\"-5 -5 30 20\">\n<title>Flag of the People's Republic of China</title>\n<rect fill=\"#de2910\" x=\"-5\" y=\"-5\" width=\"30\" height=\"20\"/>\n<defs>\n<polygon id=\"s\" points=\"0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571\"\nfill=\"#ffde00\" transform=\"scale(0.0000019467600073)\"/>\n</defs>\n<use xlink:href=\"#s\" transform=\"scale(3)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,-3) rotate(-120.963756)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,-1) rotate(-98.130102)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,2) rotate(-74.054604)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,4) rotate(-51.3401917)\"/>\n</svg>\n"
        }
    }
}
\define ref(label)
<$button popup="$:/state/$label$" class="tc-btn-invisible tc-slider"><sup style="color:
#94052f">$label$</sup></$button>
\end

\define definition(label,text)
<$reveal type="popup" state="$:/state/$label$" animate="yes">
<div class="tc-drop-down">
<dl>
<dt>$label$</dt> 
<span style="color:gray">
<dd>@@color:gray; <i class="fa fa fa-info-circle fa-2x fa-pull-left "></i>@@ $text$</dd>
</span> 
</dl>
</div>
</$reveal>
\end

\define footnote(label,text)
<<ref "$label$">>
<<definition "$label$" "$text$">>
\end

\define footnotes(label,text)
<<definition "$label$" "$text$">>
<sub><span style="color:gray">''$label$'' :  $text$  </span></sub>
\end
$:/palettes/Rocker
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background: 
button-foreground: 
button-border: 
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #5778d8
foreground: #333333
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected: 
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button: 
toolbar-options-button: 
toolbar-save-button: 
toolbar-info-button: 
toolbar-edit-button: 
toolbar-close-button: 
toolbar-delete-button: 
toolbar-cancel-button: 
toolbar-done-button: 
untagged-background: #999999
very-muted-foreground: #888888
<svg xmlns="http://www.w3.org/2000/svg" class="tc-image-button tc-image-view-fields" width="22pt" height="22pt" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M7 11H1v2h6v-2zm2.17-3.24L7.05 5.64 5.64 7.05l2.12 2.12 1.41-1.41zM13 1h-2v6h2V1zm5.36 6.05l-1.41-1.41-2.12 2.12 1.41 1.41 2.12-2.12zM17 11v2h6v-2h-6zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24l2.12 2.12 1.41-1.41-2.12-2.12-1.41 1.41zm-9.19.71l1.41 1.41 2.12-2.12-1.41-1.41-2.12 2.12zM11 23h2v-6h-2v6z"/></svg>
<$reveal type="nomatch" state="$:/state/toggle-view-fields" text="show">
 <$button class="tc-btn-invisible" 
   set="$:/state/toggle-view-fields" 
   setTo="show"
   tooltip="Show tiddler fields"   
 > 
   {{$:/plugins/.mr/shiraz/images/view-fields.svg}}
   <$action-setfield $tiddler="$:/plugins/.mr/shiraz/viewtemplate/view-fields" tags="Tools $:/tags/ViewTemplate"/>
 </$button>
</$reveal>
<$reveal type="match" state="$:/state/toggle-view-fields" text="show">
 <$button class="tc-btn-invisible" 
   set="$:/state/toggle-view-fields" 
   setTo="hide"
   tooltip="Hide tiddler fields"
 >
    {{$:/plugins/.mr/shiraz/images/view-fields.svg}}
   <$action-setfield $tiddler="$:/plugins/.mr/shiraz/viewtemplate/view-fields" tags="Tools"/>
 </$button>
</$reveal>
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end

\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end

\define new-field()
<$vars name={{$:/temp/newfieldname}}>
<$reveal type="nomatch" text="" default=<<name>>>
<$button>
<$action-sendmessage $message="tm-add-field"
$name=<<name>>
$value={{$:/temp/newfieldvalue}}/>
<$action-deletetiddler $tiddler="$:/temp/newfieldname"/>
<$action-deletetiddler $tiddler="$:/temp/newfieldvalue"/>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
<$reveal type="match" text="" default=<<name>>>
<$button>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
</$vars>
\end

<div class="tc-edit-fields">
<table class="tc-edit-fields">
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField">
<$list filter=<<config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
<$action-deletefield $field=<<currentField>>/>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
</$list>
</$list>
</tbody>
</table>
</div>

<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit">
<<lingo Fields/Add/Prompt>>
</em>
<span class="tc-edit-field-add-name">
<$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle"/>
</span>
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$linkcatcher to="$:/temp/newfieldname">
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/User>>
</div>
<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type"  variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
</$link>
</$list>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
</$link>
</$list>
</$linkcatcher>
</div>
</$reveal>
<span class="tc-edit-field-add-value">
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor"/>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>
</div>
</$fieldmangler>
{
    "tiddlers": {
        "$:/plugins/danielo/encryptTiddler/Changelog": {
            "title": "$:/plugins/danielo/encryptTiddler/Changelog",
            "text": "!! V2.1\n* Added control panel.\n* Added ability to batch encrypt and decrypt tiddlers.\n* Added some documentation an language strings.\n\n"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt",
            "caption": "Batch Encryption",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n{{$:/plugins/danielo/encryptTiddler/language/batch}}\n\n<$linkcatcher to=\"$:/temp/encrypt/filter\">\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/encrypt/filter\" type=\"search\" tag=\"input\" default=\"\" placeholder=\"filter tiddlers\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/encrypt/filter\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n\n<$edit-text tag=\"input\" tiddler=\"$:/temp/password\" placeholder=\"password\" type=\"password\" default=\"\" col=\"4\"/><$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}>\n<$button message=\"tw-encrypt-tiddler\">\nEncrypt\n</$button>\n<$button message=\"tw-decrypt-tiddler\">\nDecrypt\n</$button>\n</$encryptTiddler>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]!sort[]] -[[$:/core/Filters/SystemTags]] -[[$:/core/Filters/AllTags]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/encrypt/filter}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/encrypt/filter}} template=\"$:/plugins/danielo/encryptTiddler/ui/listItemTemplate\"/>\n</div>\n</$set>\n</$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel",
            "tags": "$:/tags/ControlPanel",
            "caption": "Encrypt Tiddlers",
            "text": "\\define prefix(name) $:/plugins/danielo/encryptTiddler/control-panel/$name$\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]prefix[$:/plugins/danielo/encryptTiddler/control-panel/]]\" default=<<prefix \"batch-encrypt\">> state=\"$:/state/encryptTiddler/control-panel/tabs\">>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-batch-button": {
            "creator": "Danielo",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-batch-button",
            "text": "<span title=\"Encrypt/Decrypt tiddler\" class=\"pc-batch-controls\">\n<$reveal state=<<qualify \"$:/state/encrypt\">> type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>\n<$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$button message=\"tw-encrypt-tiddler\"  set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Encrypt</$button> <$button message=\"tw-decrypt-tiddler\" set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Decrypt</$button></span>\n</div>\n</$reveal></$encryptTiddler>\n</span>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-button": {
            "created": "20140405233000477",
            "creator": "Danielo",
            "modified": "20140608121335075",
            "tags": "$:/tags/ViewToolbar button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-button",
            "type": "text/vnd.tiddlywiki",
            "text": "<span title=\"Encrypt/Decrypt tiddler\"><$transclude tiddler=\"$:/plugins/danielo/encryptTiddler/openPopup\"/>\n</span><$encryptTiddler passwordTiddler=\"$:/temp/password\"><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$list filter=\"[all[current]!has[encrypted]]\"> <$button message=\"tw-encrypt-tiddler\"  set=\"$:/state/encrypt\" setTo=\"\" >Encrypt</$button></$list><$list filter=\"[is[current]has[encrypted]]\"> <$button message=\"tw-decrypt-tiddler\" set=\"$:/state/encrypt\" setTo=\"\" >Decrypt</$button></$list></span>\n</div>\n</$reveal></$encryptTiddler>\n"
        },
        "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler": {
            "created": "20140406153742691",
            "creator": "pepito",
            "description": "add the hability to encrypt individual tiddlers",
            "modified": "20141029152631265",
            "modifier": "Danielo Rodriguez",
            "tags": "index plugins",
            "title": "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler",
            "type": "text/vnd.tiddlywiki",
            "caption": "readme",
            "text": "This plugin adds the ability to encrypt your tiddlers individually. This have several advantages:\n\n* You can specify a different password for each tiddler if you want.\n* You don't have to encrypt your whole wiky.\n* If you forget your password, you only lose a tiddler.\n* It's possible to edit the tiddler content , tags and fields ''except the encrypt field'' after encryption. Decrypting your tiddler will restore it to its original state when you encrypted it. This way you can hide the encrypted tiddlers as a \"different\" thing.\n* You can even encrypt images.\n* You can have sensible data in a day to day wiky.\n* I didn't try this, but theoretically you can apply double encryption by encrypting your wiki too."
        },
        "$:/plugins/danielo/encryptTiddler/encrypttiddler.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo/encryptTiddler/encrypttiddler.js\ntype: application/javascript\nmodule-type: widget\n\nencrypttiddler widget\n\n```\n\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar encryptTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t\t{type: \"tw-encrypt-tiddler\", handler: \"handleEncryptevent\"},\n\t\t\t{type: \"tw-decrypt-tiddler\", handler: \"handleDecryptevent\"},\n\t\t\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nencryptTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nencryptTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tconsole.log(\"Render\");\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nencryptTiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\t this.tiddlerTitle=this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t this.filter=this.getAttribute(\"filter\",undefined);\n \t this.passwordTiddler=this.getAttribute(\"passwordTiddler\");\n\t// Construct the child widgets\n\tconsole.log(this.targetTiddler);\n\t\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nencryptTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.filter) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nencryptTiddlerWidget.prototype.getTiddlersToProcess = function(){\n\tif(this.filter){ //we have a filter to work with\n\t\treturn this.wiki.filterTiddlers(this.filter);\n\t}else{ //single tiddler case\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t\treturn tiddler? [tiddler.fields.title] : [];\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleEncryptevent = function(event){\n\tvar password = this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields={text:\"!This is an encrypted Tiddler\",\n\t\t\t\t\t\t\t\t  encrypted:self.encryptFields(title,password)};\n\t\t\tself.saveTiddler(tiddler,fields);\n\t\t});\n\n\t}else{\n\t\tconsole.log(\"We did not find any tiddler to encrypt or password not set!\")\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleDecryptevent = function(event){\n\tvar password =this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields = self.decryptFields(tiddler,password);\n\t\t\tif(fields)self.saveTiddler(tiddler,fields);\n\t\t});\n\t}\n};\n\nencryptTiddlerWidget.prototype.saveTiddler=function(tiddler,fields){\n\tthis.wiki.addTiddler(  new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,this.clearNonStandardFields(tiddler), fields ) )\n}\n\nencryptTiddlerWidget.prototype.encryptFields = function (title,password){\n\tvar jsonData=this.wiki.getTiddlerAsJson(title);\n\treturn $tw.crypto.encrypt(jsonData,password);\n\n};\n\nencryptTiddlerWidget.prototype.decryptFields = function(tiddler,password){\n\t\tvar JSONfields =$tw.crypto.decrypt(tiddler.fields.encrypted,password);\n\t\tif(JSONfields!==null){\n\t\t\treturn JSON.parse(JSONfields);\n\t\t}\n\t\tconsole.log(\"Error decrypting \"+tiddler.fields.title+\". Probably bad password\")\n\t\treturn false\n};\n\nencryptTiddlerWidget.prototype.getPassword = function(){\n\tvar tiddler=this.wiki.getTiddler(this.passwordTiddler);\n\tif(tiddler){\n\t\tvar password=tiddler.fields.text;\n\t\tthis.saveTiddler(tiddler); //reset password tiddler\n\t\treturn password;\n\t}\n\n\treturn false\n};\n\n// This function erases every field of a tiddler that is not standard and also\n// the text field\nencryptTiddlerWidget.prototype.clearNonStandardFields =function(tiddler) {\n\tvar standardFieldNames = \"title tags modified modifier created creator\".split(\" \");\n\t\tvar clearFields = {};\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(standardFieldNames.indexOf(fieldName) === -1) {\n\t\t\t\tclearFields[fieldName] = undefined;\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"Cleared fields \"+JSON.stringify(clearFields));\n\t\treturn clearFields;\n};\n\nexports.encryptTiddler = encryptTiddlerWidget;\n\n})();",
            "title": "$:/plugins/danielo/encryptTiddler/encrypttiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers",
            "description": "All encrypted tiddlers",
            "filter": "[has[encrypted]]",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers",
            "filter": "[!is[system]!has[encrypted]]",
            "description": "Non-encrypted normal tiddlers",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/language/batch": {
            "title": "$:/plugins/danielo/encryptTiddler/language/batch",
            "text": "Use below controls to encrypt or decrypt a bunch of tiddlers. Encryption ''controls are hidden'' until you type something in the search box. All listed tiddlers will be affected. The presence of a small padlock (<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>) next to the tiddler title indicates that particular tiddler is already encrypted."
        },
        "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate": {
            "title": "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n<$list filter=\"[all[current]has[encrypted]]\">\n<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>\n</$list>\n</$link>\n</div>"
        },
        "$:/plugins/danielo/encryptTiddler/openPopup": {
            "created": "20140406151910358",
            "creator": "Danielo",
            "modified": "20140608121417975",
            "modifier": "pepito",
            "tags": "button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/openPopup",
            "type": "text/vnd.tiddlywiki",
            "text": "<$reveal state=\"$:/state/encrypt\" type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/styles": {
            "created": "20140406110705085",
            "creator": "pepito",
            "modified": "20140608121510064",
            "modifier": "pepito",
            "tags": "$:/tags/Stylesheet encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/styles",
            "type": "text/plain",
            "text": ".tw-password-field {\n\tdisplay: inline-block;\n\twidth: 55%;\n  font-size:1em;\n  line-height:0;\n  margin:0;\n\tpadding-left:7%;\n}\n\n.pc-batch-controls .tw-crypt-dropdown{\n\tright: 0px;\n}\n\n.pc-batch-controls{\n\t\tposition:relative;\n}\n\n.pc-listItem-lock svg{\n\theight: 1em;\n\twidth: 1em;\n\tfill: #aaaaaa;\n}\n\n/*It is for use in combination with tc-block-dropdown */\n.tw-crypt-dropdown{\n      line-height:0;\n\t\t\tpadding-left:5px;\n\t\t\t}\n\n.tw-password-field input{\n       font-size:0.5em;\n\n}\n\n.tw-crypt-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n.tw-crypt-button button{\n\tfont-size:0.5em;\n}\n"
        },
        "$:/plugins/danielo/encryptTiddler/unlocked": {
            "created": "20140406101339943",
            "creator": "danielo515",
            "modified": "20140608121532690",
            "modifier": "danielo515",
            "tags": "encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/unlocked",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button\"\n\t viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\">\n<g>\n\t<path d=\"M77.555,50H35.304V31.63c0-4.057,1.435-7.521,4.305-10.391c2.87-2.87,6.333-4.305,10.391-4.305\n\t\tc4.056,0,7.52,1.435,10.39,4.305s4.305,6.335,4.305,10.391c0,0.996,0.363,1.857,1.091,2.583c0.727,0.729,1.588,1.09,2.583,1.09\n\t\th3.674c0.995,0,1.856-0.361,2.583-1.09c0.727-0.727,1.091-1.588,1.091-2.583c0-7.079-2.517-13.136-7.549-18.17\n\t\tC63.136,8.428,57.08,5.912,50,5.912c-7.081,0-13.137,2.516-18.169,7.548c-5.033,5.034-7.549,11.091-7.549,18.17V50h-1.837\n\t\tc-1.531,0-2.833,0.536-3.904,1.608c-1.072,1.072-1.607,2.372-1.607,3.902v33.067c0,1.532,0.535,2.832,1.607,3.904\n\t\tc1.071,1.072,2.372,1.608,3.904,1.608h55.11c1.53,0,2.832-0.536,3.904-1.608c1.071-1.072,1.607-2.372,1.607-3.904V55.51\n\t\tc0-1.529-0.536-2.83-1.607-3.902C80.387,50.536,79.085,50,77.555,50z M54.315,72.937V83.72c0,2.173-1.762,3.935-3.935,3.935H49.62\n\t\tc-2.173,0-3.935-1.762-3.935-3.935V72.937c-2.31-1.443-3.852-4.001-3.852-6.925c0-4.511,3.657-8.167,8.167-8.167\n\t\ts8.167,3.657,8.167,8.167C58.167,68.937,56.625,71.495,54.315,72.937z\"/>\n</g>\n</svg>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/inmysocks/LibraryTracker/Add Books": {
            "caption": "Add Books",
            "created": "20141227050110053",
            "modified": "20150202040250468",
            "title": "$:/plugins/inmysocks/LibraryTracker/Add Books",
            "text": "\\define thisSeriesSelect()\n<$select tiddler='$:/temp/newbook' field='series' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisGenreSelect()\n<$select tiddler='$:/temp/newbook' field='genre' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisAuthorSelect()\n<$select tiddler='$:/temp/newbook' field='author' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisLocationSelect()\n<$select tiddler='$:/temp/newbook' field='location' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisTagSelect()\n<$select tiddler='$:/state/booktag' field='selected_tag'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisOwnerSelect()\n<$select tiddler='$:/temp/newbook' field='owner' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookOwners]indexes[]sort[title]regexp:[(?i)$(thisOwnerSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisTypeSelect()\n<$select tiddler='$:/temp/newbook' field='item_type'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookTypes]indexes[]sort[title]regexp:[(?i)$(thisTypeSearch)$]]'> <!--  [[Book]][[Video Game]][[Board/Card Game]][[Movie]]'>-->\n\t\t<option>\n\t\t\t<<currentTiddler>>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nAdding Items:\n\n<!--Type-->\nType:\n<$reveal state='$:/state/Library Tracker/add type' type=nomatch text='new'>\n\t<$set name=thisTypeSearch value={{$:/state/newbook!!narrow_type_select}}>\n\t\t<<thisTypeSelect>>\n\t</$set>\n\t<$edit-text tiddler='$:/state/newbook' field='narrow_type_select' placeholder='Narrow Type List'/>\n\t(<$button set='$:/state/Library Tracker/add type' setTo='new'>New Item Type</$button>)\n</$reveal>\n<$reveal state='$:/state/Library Tracker/add type' type=match text='new'>\n\t<$edit-text tiddler='$:/state/newbook' field='book_type' placeholder='Item Type'/>\n\t<$button>\n\t\tAdd\n\t\t<$action-setfield $tiddler='$:/data/BookTypes' $index={{$:/state/newbook!!book_type}} $value=1/>\n\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>\n\t</$button>\n\t<$button set='$:/state/Library Tracker/add type' setTo='notnew'>\n\t\tDone\n\t</$button>\n</$reveal>\n<br>\n<!--End Type-->\n<!--Title-->\nTitle:\n<$edit-text tiddler='$:/state/newbook' field='book_title' class='tc-edit-texteditor' placeholder='Book Title'/>\n<!--End Title-->\n<!--Author-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author'>\n\tAuthor: \n\t<$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>\n\t\t<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>\n\t\t\t<<thisAuthorSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/>\n\t\t(<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add author' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Author-->\n<!--Series-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series'>\n\tSeries:\n\t<$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>\n\t\t<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>\n\t\t\t<<thisSeriesSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/> \n\t\t(<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add series' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Series-->\n<!--Genre-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre'>\n\tGenre:\n\t<$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>\n\t\t<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>\n\t\t\t<<thisGenreSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/>\n\t\t(<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add genre' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Genre-->\n<!--Location-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location'>\n\tLocation:\n\t<$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>\n\t\t<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>\n\t\t\t<<thisLocationSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/>\n\t\t(<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add location' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Location-->\n<!--Owner-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner'>\n\tOwner:\n\t<$reveal state='$:/state/Library Tracker/add owner' type=nomatch text='new'>\n\t\t<$set name=thisOwnerSearch value={{$:/state/newbook!!narrow_owner_select}}>\n\t\t\t<<thisOwnerSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_owner_select' placeholder='Narrow Owner List'/>\n\t\t(<$button set='$:/state/Library Tracker/add owner' setTo='new'>New  Owner</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add owner' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='owner' placeholder='Owner'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookOwners' $index={{$:/state/newbook!!owner}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='owner' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add owner' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n</$reveal>\n<!--End Owner-->\n\n\n<!--Tags-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_tags'>\n\tTags (it will always be tagged with `Book` by default):\n\t<br>\n\t<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>\n\t\tNew Tag:\n\t\t<$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>\n\t\t<$button>\n\t\t\tCreate Tag\n\t\t\t<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>\n\t\t\tDone\n\t\t</$button>\n\t\t<br>\n\t</$reveal>\n\t<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>\n\t\tTag to add: \n\t\t<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>\n\t\t\t<<thisTagSelect>>\n\t\t</$set>\n\t\t<$fieldmangler tiddler='$:/temp/newbook'>\n\t\t\t<$button>\n\t\t\t\tAdd Tag\n\t\t\t\t<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>\n\t\t\t</$button>\n\t\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>\n\t\t\t(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)\n\t\t</$fieldmangler>\n\t\t<br>\n\t</$reveal>\n\tList of current tags:\n\t<br>\n\t<$fieldmangler tiddler='$:/temp/newbook'>\n\t\t<$list filter='[[$:/temp/newbook]tags[]]'>\n\t\t\t<$view field='title'/>\n\t\t\t<$button>\n\t\t\t\tRemove Tag\n\t\t\t\t<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/>\n\t\t\t</$button>\n\t\t\t<br>\n\t\t</$list>\n\t</$fieldmangler>\n</$reveal>\n\n<$fieldmangler tiddler={{$:/state/newbook!!book_title}}>\n\t<$button>\n\t\tAdd Book\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' author=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' series=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' genre=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' location=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' owner=''/>\n\t\t</$reveal>\n\t\t<$action-setfield $tiddler='$:/temp/newbook' title={{$:/state/newbook!!book_title}}/>\n\t\t<$action-sendmessage $message='tm-add-tag' $param='Book'/>\n\t\t<$action-setfield $tiddler='$:/state/newbook' book_title=''/>\n\t\t<$action-setfield $tiddler='$:/temp/newbook' tags=''/>\n\t</$button>\n</$fieldmangler>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Book List": {
            "caption": "Book List",
            "created": "20141227230158171",
            "modified": "20150202035414054",
            "title": "$:/plugins/inmysocks/LibraryTracker/Book List",
            "text": "\\define thisBookList()\n<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=item_type/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=author/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=owner/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=series/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=genre/>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisBookList2()\n<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=item_type/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=author/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=owner/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=series/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=genre/>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisSelectThing()\n<$reveal type='match' state='$:/state/newbook!!sort' text='author'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t<option value=''>\n\t\tAll\n\t</option>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='series'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='location'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='owner'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='type'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisMakeSelectedValue()\n$(sortType)$[$(SelectedType)$]\n\\end\n\n\\define count1()\n<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define count2()\n<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define thisSetLocation()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=location/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='location'>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSortBySelect()\n<$select tiddler='$:/state/newbook' field='sort' default='title'>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisSearchBySelect()\n<$select tiddler='$:/state/newbook' field='search_in' default='title'>\n\t<option value='tags'>\n\t\tTag\n\t</option>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nIf you select an author/series/location/genre from the drop down menu, then change the `Sort by` option you will have to select from the second dropdown menu again to get it to display things. Despite it showing `all` when you change the sort by option it keeps the previous value, which is invalid now. If I can get a select widget to active action widgets, or to change multiple fields at the same time than I can fix this.\n\nIf you click on the location of a book it will allow you to change the books location.\n\n|Sort by |<<thisSortBySelect>>|<<thisSelectThing>>|\n|Search by |<<thisSearchBySelect>>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|\n\n<$set name=sortType value={{$:/state/newbook!!sort}}>\n<$set name=searchField value={{$:/state/newbook!!search_in}}>\n<$set name=thisSearch value={{$:/state/newbook!!search_text}}>\n<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>\n<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>\n\n<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>\n\tNumber of matching books: <<count1>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList>>\n\t</table>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>\nNumber of matching books: <<count2>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList2>>\n\t</table>\n</$reveal>\n\n</$set>\n</$set>\n</$set>\n</$set>\n</$set>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings": {
            "caption": "Settings",
            "created": "20150122105554017",
            "edit_author_list": "blerg",
            "modified": "20150130025204191",
            "show_author": "true",
            "show_genre": "true",
            "show_location": "true",
            "show_series": "true",
            "show_tags": "true",
            "title": "$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings",
            "text": "\\define thisRemoveAuthor()\nSelect Author: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_author_list'><$list filter='[[$:/data/BookAuthors]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookAuthors##$(AuthorToRemove)$'>Remove Author</$button>\n\\end\n\n\\define thisRemoveSeries()\nSelect Series: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_series_list'><$list filter='[[$:/data/SeriesTitles]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/SeriesTitles##$(SeriesToRemove)$'>Remove Series</$button>\n\\end\n\n\\define thisRemoveGenre()\nSelect Genre: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_genre_list'><$list filter='[[$:/data/BookGenres]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookGenres##$(GenreToRemove)$'>Remove Genre</$button>\n\\end\n\n\\define thisRemoveLocation()\nSelect Location: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_location_list'><$list filter='[[$:/data/BookLocations]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookLocations##$(LocationToRemove)$'>Remove Location</$button>\n\\end\n\n\\define thisRemoveTag()\nSelect Tag: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_tag_list'><$list filter='[[$:/data/BookTags]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookTags##$(TagToRemove)$'>Remove Tag</$button>\n\\end\n\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_type' checked=true unchecked=false>Show Item Type</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_author' checked=true unchecked=false>Show Author</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_series' checked=true unchecked=false>Show Series</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_genre' checked=true unchecked=false>Show Genre</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_location' checked=true unchecked=false>Show Location</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_owner' checked=true unchecked=false>Show Owner</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_tags' checked=true unchecked=false>Show Tags</$checkbox><br>\n\n!!Edit Author List\n<$set name=AuthorToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_author_list}}>\n<<thisRemoveAuthor>>\n</$set>\n\n!!Edit Series List\n<$set name=SeriesToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_series_list}}>\n<<thisRemoveSeries>>\n</$set>\n\n!!Edit Genre List\n<$set name=GenreToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_genre_list}}>\n<<thisRemoveGenre>>\n</$set>\n\n!!Edit Location List\n<$set name=LocationToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_location_list}}>\n<<thisRemoveLocation>>\n</$set>\n\n!!Edit Tag List\n<$set name=TagToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_tag_list}}>\n<<thisRemoveTag>>\n</$set>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Library Tracker": {
            "book_title": "Boneshaker",
            "caption": "Library Tracker",
            "created": "20141227230052741",
            "list-after": "Bookmarks",
            "modified": "20150203222646555",
            "tags": "Dashboard",
            "title": "$:/plugins/inmysocks/LibraryTracker/Library Tracker",
            "text": "<<tabs \"[[$:/plugins/inmysocks/LibraryTracker/Book List]] [[$:/plugins/inmysocks/LibraryTracker/Add Books]] [[$:/plugins/inmysocks/LibraryTracker/Manage Books]] [[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]]\" \"[[$:/plugins/inmysocks/LibraryTracker/Book List]]\">>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Manage Books": {
            "book_title": "Foundation",
            "caption": "Manage Books",
            "created": "20141227230045301",
            "modified": "20150202040126066",
            "title": "$:/plugins/inmysocks/LibraryTracker/Manage Books",
            "text": "\\define thisMakeSelectedValue()\n$(sortType)$[$(SelectedType)$]\n\\end\n\n\\define count1()\n<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define count2()\n<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define thisSetType()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=item_type/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='item_type'>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetAuthor()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=author/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='author'>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetLocation()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=location/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='location'>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetOwner()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=owner/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='owner'>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetSeries()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=series/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='series'>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetGenre()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=genre/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='genre'>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisBookList()\n<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<<thisSetType>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<<thisSetAuthor>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<<thisSetOwner>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<<thisSetSeries>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<<thisSetGenre>>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisBookList2()\n<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<<thisSetType>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<<thisSetAuthor>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<<thisSetOwner>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<<thisSetSeries>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<<thisSetGenre>>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisSelectThing()\n<$reveal type='match' state='$:/state/newbook!!sort' text='author'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t<option value=''>\n\t\tAll\n\t</option>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='series'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='location'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='owner'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='type'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSortBySelect()\n<$select tiddler='$:/state/newbook' field='sort' default='title'>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisSearchBySelect()\n<$select tiddler='$:/state/newbook' field='search_in' default='title'>\n\t<option value='tags'>\n\t\tTag\n\t</option>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nTo edit an item, click on the field you want to change and use the dropdown menu to change the value. Edits happen immediately. Click on the <$button class='tc-btn-invisible'>{{$:/core/images/done-button}}</$button> to finish editing.\n\n|Sort by |<<thisSortBySelect>>|<<thisSelectThing>>|\n|Search by |<<thisSearchBySelect>>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|\n\n<$set name=sortType value={{$:/state/newbook!!sort}}>\n<$set name=searchField value={{$:/state/newbook!!search_in}}>\n<$set name=thisSearch value={{$:/state/newbook!!search_text}}>\n<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>\n<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>\n\n<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>\n\tNumber of matching books: <<count1>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList>>\n\t</table>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>\nNumber of matching books: <<count2>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList2>>\n\t</table>\n</$reveal>\n\n</$set>\n</$set>\n</$set>\n</$set>\n</$set>"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/telmiger/details/details.css": {
            "text": "/* details and summary */\n\ndetails {\n   transition: height 1s ease;\n   padding: 0 0.5em 0 0.66em;\n   margin-top: 0.66em;\n   margin-bottom: 0.66em;\n}\n\ndetails + details {\n   margin-top: -0.46em;\n}\n\ndetails[open] {\n   padding-bottom: 1em;\n}\n\ndetails:not([open]) { \n   cursor: pointer;\n}\n\ndetails > summary {\n   display: list-item;\n   margin: 0 -0.5em 0 -0.66em;\n   padding: 0.2em 0.5em 0.2em 0.66em;\n   padding-left: 1.76em;  /* adjust for indentation */\n   text-indent: -1.1em;\n   cursor: pointer;\n}\n\ndetails[open] > summary {\n   margin-bottom: 1em;\n}\n\ndetails[open] > *:first-child:not(summary) {\n   margin-top: 1em;\n}\n",
            "title": "$:/plugins/telmiger/details/details.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180929131615369",
            "creator": "Thomas Elmiger",
            "created": "20170122140815442"
        },
        "$:/plugins/telmiger/details/details.js": {
            "text": "/*\\\ntitle: $:/plugins/telmiger/details/details.js\ntype: application/javascript\nmodule-type: widget\n\nDetails widget v 0.8\n\nWill output an HTML 5 <details> section including a <summary>\n\n```\n\t<details>\n\t\t<summary>This sums it up</summary> \n\t\tAll the details follow here.\n\t</details>\n```\n\n|Parameter |Description |h\n|summary |Optional text to display as summary. Wins over field (see below). |\n|open |Optional initial state, set to \"open\" to show details on load. Defaults to \"\". |\n|state |An optional TextReference containing the state. Wins over open. |\n|field |Optionally, the summary is taken from the field with this name in a given tiddler. Defaults to \"title\". |\n|tiddler |Optional title of a tiddler to watch, connected to field. Defaults to current tiddler. |\n|class |Optional CSS classes to be assigned to the details tag. |\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DetailsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDetailsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDetailsWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute attributes\n\tthis.computeAttributes();\n\t// Execute logic\n\tthis.execute();\n\t// Create elements\n\tthis.detailsDomNode = this.document.createElement(\"details\");\n\tif(this.detailsClass !== \"\") {\n\t\t// this.detailsClass += \" \";\n\t\t// this.detailsClass += \"tc-details\";\n\t\tthis.detailsDomNode.setAttribute(\"class\",this.detailsClass);\n\t}\n\tif(this.detailsOpen == \"open\") {\n\t\tthis.detailsDomNode.setAttribute(\"open\",\"open\");\n\t}\n\tif(this.detailsSummary !== \"\") {\n\t\tthis.summaryDomNode = this.document.createElement(\"summary\");\n\t\t// this.summaryDomNode.setAttribute(\"class\",\"tc-summary\");\n\t\tthis.detailsDomNode.appendChild(this.summaryDomNode);\n\t\tthis.summaryDomNode.appendChild(this.document.createTextNode(this.detailsSummary));\n\t}\n// register an event listener\n/* Maybe this can be reactivated later, see below.\n\tif(this.detailsStateTitle) {\n\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t{name: \"toggle\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t}\n*/\n// As iOS mobile browsers lack support of toggle events on details \n// we emulate the toggle event using click\n\tif(this.detailsStateTitle && this.summaryDomNode) {\n\t\t$tw.utils.addEventListeners(this.summaryDomNode,[\n\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t} else {\n\t\tif(this.detailsStateTitle) {\n\t\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t\t]);\n\t\t}\n\t}\n\t// Insert the details into the DOM and render any children\n\tthis.parentDomNode.insertBefore(this.detailsDomNode,nextSibling);\n\tthis.renderChildren(this.detailsDomNode,null);\n\tthis.domNodes.push(this.detailsDomNode);\n};\n\n/*\nRetrieve the value of the summary\n*/\nDetailsWidget.prototype.getSummary = function() {\n\tvar summary = \"\";\n\tif(this.summaryTitle === \"Tiddler not found\" && this.summaryField === \"\") {\n\t// nothing defined: leave empty \n\t\tsummary = \"\";\n\t} else {\n\t\t// tiddler defined? use defined field or title\n\t\tif(this.myTiddler) {\n\t\t\tif(this.summaryField === \"title\" || this.summaryField === \"\") {\n\t\t\t\tsummary = this.summaryTitle;\n\t\t\t} else {\n\t\t\t\tif(this.summaryField === \"text\") {\n         \t\t// getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\t\tsummary = this.wiki.getTiddlerText(this.summaryTitle);\n\t\t\t\t} else {\n\t\t\t\t\tsummary = this.myTiddler.fields[this.summaryField];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.summaryField !== \"\" && this.summaryField !== \"text\") {\n\t\t\t\t// try defined field in current tiddler\n\t\t\t\tvar tiddler = this.wiki.getTiddler(this.getVariable(\"currentTiddler\"));\n\t\t\t\tsummary = tiddler.fields[this.summaryField];\n\t\t\t} else {\n\t\t\t\tsummary = \"\";\n\t\t\t}\n\t\t}\n\t}\n   return summary;\n};\n\n/*\nRetrieve the value of the state text reference\n*/\nDetailsWidget.prototype.getStateFromReference = function() {\n    var state = this.detailsStateTitle ? this.wiki.getTextReference(this.detailsStateTitle,\"\",this.getVariable(\"currentTiddler\")) : \"\";\n    return state;\n};\n\n/*\nCheck all open signals, state fields/tiddlers get priority\n*/\nDetailsWidget.prototype.getOpenState = function() {\n\tvar result = \"\";\n\tif((this.detailsOpenDefault !== \"\" && this.detailsOpenDefault !== \"no\") \n\t    || this.detailsState === \"open\") {\n\t\tresult = \"open\";\n\t } \n\tif(this.detailsStateTitle !==\"\" && this.detailsState !== \"open\") {\n\t\tresult = \"\";\n\t}\n\treturn result;\n};\n\n/*\nUpdate the state text reference after click event\n*/\nDetailsWidget.prototype.updateState = function(openState) {\n\tvar fieldValue = \"false\";\n\tvar currentTiddler = this.getVariable(\"currentTiddler\");\n    // get the title for the (existing/new) tiddler\n\tvar tr = $tw.utils.parseTextReference(this.detailsStateTitle);\n\tvar tidTitle = tr.title || currentTiddler;\n    // is it an existing state tiddler?\n\tvar isStateTiddler = (tr.title === this.detailsStateTitle);\n\tvar hasStateTiddler = this.wiki.tiddlerExists(tr.title);\n\tvar currentStateTiddler = (tr.title === currentTiddler);\n\tif(isStateTiddler || hasStateTiddler || (currentStateTiddler && tr.field !== \"text\")) { \n\t\t// Set the state field (but never overwrite the current tiddler’s text field\n\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t} else {\n\t\tif(!hasStateTiddler && tidTitle !== currentTiddler) {\n\t\t\tthis.createTiddler(tidTitle);\n\t\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t\t} else {\n\t\t\tconsole.log (\"Something went wrong in updateState\");\n\t\t}\n\t}\n};\n\n/*\nCreate a tiddler with a title only\n*/\nDetailsWidget.prototype.createTiddler = function(tidTitle) {\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: tidTitle,\n\t\t\ttags: []\n\t\t}\n\t));\n};\n\n/*\nSet openState according to click\n*/\nDetailsWidget.prototype.handleToggleEvent = function(event) {\n\t// check if an open attribute is present\n\tvar newState = this.detailsDomNode.open ? \"\" : \"open\";\n\t// update only, if the node has a new state\n\tif(newState !== this.detailsState) {\n\t\tthis.updateState(newState);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDetailsWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes \n\tvar tryTiddler = this.getAttribute(\"tiddler\");\n\tthis.myTiddler = this.wiki.getTiddler(tryTiddler);\n\tthis.summaryTitle = this.myTiddler ? tryTiddler : \"Tiddler not found\";\n\tthis.summaryField = this.getAttribute(\"field\",\"\");\n\tthis.detailsSummary = this.getAttribute(\"summary\") || this.getSummary();\n\tthis.detailsStateTitle = this.getAttribute(\"state\",\"\");\n\tthis.detailsState = this.getStateFromReference();\n\tthis.detailsOpenDefault = this.getAttribute(\"open\",\"\");\n\tthis.detailsOpen = this.getOpenState();\n\tthis.detailsClass = this.getAttribute(\"class\",\"\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDetailsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.summary || changedAttributes.state || changedAttributes.open || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tvar testState = this.getStateFromReference();\n\t\tif(testState !== this.detailsState) {\n\t\t\t// state change\n\t\t\tthis.refreshSelf();\n\t\t\trefreshed = true;\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.details = DetailsWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/telmiger/details/details.js",
            "tags": "Plugins",
            "module-type": "widget",
            "modifier": "Thomas Elmiger",
            "modified": "20180929212032187",
            "creator": "Thomas Elmiger",
            "created": "20170124173619910"
        },
        "$:/plugins/telmiger/details/icon": {
            "created": "20170205205314072",
            "text": "<svg class=\"tc-image-button telmiger-icon\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" viewBox=\"0 0 128 128\" role=\"img\" aria-labelledby=\"title\"><title id=\"title\">T</title><path class=\"circle\" d=\"M64 2C30 2 2 29.753 2 64c0 34.235 27.753 62 62 62s62-27.752 62-62C126 29.753 98.221 2 64 2z\"/><path class=\"t\" d=\"M100.41 63.254c-2.886 1.92-7.544 2.883-13.979 2.883h-8.008c-4.246 0-7.331.845-9.254 2.536-1.922 1.69-3.449 5.086-4.576 10.19 0 0-.181 1.481-.503 1.481s-.369-.877-.518-1.586a37.897 37.897 0 0 0-.721-2.754c-.631-2.137-1.262-3.753-1.894-4.847-.764-1.359-1.727-2.452-2.889-3.28-1.162-.83-2.49-1.326-3.985-1.492l-2.092-.248H41.73c-6.144 0-10.711-.962-13.7-2.884-4.976-3.159-7.649-9.129-8.02-17.91-.03-.706.003-1.351.132-2.171h.585c.399 3.975 3.679 7.048 6.086 9.219 2.408 2.172 6.269 3.258 11.581 3.258h9.313c5.347 0 9.257 1.226 11.731 3.68 2.231 2.213 3.701 5.68 4.406 10.4.076.511.03.736.178.736.149 0 .11-.256.17-.783.713-6.122 3.085-10.219 7.117-12.294 2.487-1.292 6.434-1.906 11.841-1.839l6.368.1c4.311.066 7.942-.788 10.893-2.56 2.953-1.773 6.447-5.079 6.844-9.917h.595c.183.478.16 1.576.127 2.333-.371 8.752-2.894 14.668-7.567 17.749z\"/></svg>\n<style>\n.telmiger-icon .circle { fill: #e2001a }\n.telmiger-icon .t { fill: #fff }\n</style>",
            "title": "$:/plugins/telmiger/details/icon",
            "tags": "",
            "modified": "20171219183752113"
        },
        "$:/plugins/telmiger/details/license": {
            "text": "!! Plugin license\n!!!The MIT License (MIT)\n\n```\nCopyright © 2017/2018 Thomas Elmiger – thomas-elmiger.ch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```",
            "title": "$:/plugins/telmiger/details/license",
            "tags": "",
            "modified": "20170205214435064",
            "created": "20170205213335455"
        },
        "$:/plugins/telmiger/details/readme": {
            "created": "20170205212323032",
            "text": "! ~DetailsWidget\n\nA plugin for [[TiddlyWiki|http://tiddlywiki.com]] 5 containing a script and some styles to create an HTML 5 `<details>` section including a `<summary>`. Here’s an example:\n\n<$details summary=\"W3C definition\">\n\n<<<\nThe [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.\n<<< W3C\n\n</$details>\n\nDocumentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget\n",
            "title": "$:/plugins/telmiger/details/readme",
            "tags": "",
            "modified": "20171219183752113"
        },
        "$:/plugins/telmiger/details/colours.css": {
            "text": "/* details and summary colours */\n\ndetails {\n   background-color: <<colour tiddler-info-tab-background>>;\n   color: <<colour foreground>>;\n}\n\ndetails summary {\n   background-color: <<colour dropdown-tab-background>>;\n}\n\ndetails.notification summary {\n    background-color: <<colour notification-background>>;\n    /* TW leaves color undefined/uses foreground */\n}\n\ndetails.warning summary {\n    background-color: #ffbbaf;\n    color: #000;\n}\n\ndetails.success summary {\n    background-color: #88edc5;\n    color: #000;\n}\n",
            "title": "$:/plugins/telmiger/details/colours.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180926204140772",
            "creator": "Thomas Elmiger",
            "created": "20180925155320737"
        },
        "$:/plugins/telmiger/details/accordion": {
            "text": "\\define accordion(filter:\"_no_\",open:\"no\",class:\"\")\n<$vars accordion-filter=\"\"\"$filter$\"\"\" open=\"\"\"$open$\"\"\" class=\"\"\"$class$\"\"\">\n<$list filter=<<accordion-filter>>>\n<$details summary=<<currentTiddler>> open=<<open>> class=<<class>>>\n\n<$transclude tiddler=<<currentTiddler>>/>\n\n</$details>\n</$list>\n</$vars>\n\\end\n\n<!-- !!! Accordion Macro for Details\n\nList tiddlers and open them in a details-summary structure\n\n!!!! Attributes\n* filter: filter to select tiddlers\n* open: set to \"open\" to display details on load\n* class: set a class for the details tag\n\n-->",
            "title": "$:/plugins/telmiger/details/accordion",
            "tags": "$:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20180929065014252",
            "creator": "Thomas Elmiger",
            "created": "20180928194557274"
        }
    }
}
/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url(data:application/font-woff;base64,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) format("woff");  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eeeeee;
  border-radius: .1em;
}
.fa-pull-left {
  float: left;
}
.fa-pull-right {
  float: right;
}
.fa.fa-pull-left {
  margin-right: .3em;
}
.fa.fa-pull-right {
  margin-left: .3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #ffffff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook-f:before,
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-feed:before,
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before,
.fa-gratipay:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper-pp:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
.fa-buysellads:before {
  content: "\f20d";
}
.fa-connectdevelop:before {
  content: "\f20e";
}
.fa-dashcube:before {
  content: "\f210";
}
.fa-forumbee:before {
  content: "\f211";
}
.fa-leanpub:before {
  content: "\f212";
}
.fa-sellsy:before {
  content: "\f213";
}
.fa-shirtsinbulk:before {
  content: "\f214";
}
.fa-simplybuilt:before {
  content: "\f215";
}
.fa-skyatlas:before {
  content: "\f216";
}
.fa-cart-plus:before {
  content: "\f217";
}
.fa-cart-arrow-down:before {
  content: "\f218";
}
.fa-diamond:before {
  content: "\f219";
}
.fa-ship:before {
  content: "\f21a";
}
.fa-user-secret:before {
  content: "\f21b";
}
.fa-motorcycle:before {
  content: "\f21c";
}
.fa-street-view:before {
  content: "\f21d";
}
.fa-heartbeat:before {
  content: "\f21e";
}
.fa-venus:before {
  content: "\f221";
}
.fa-mars:before {
  content: "\f222";
}
.fa-mercury:before {
  content: "\f223";
}
.fa-intersex:before,
.fa-transgender:before {
  content: "\f224";
}
.fa-transgender-alt:before {
  content: "\f225";
}
.fa-venus-double:before {
  content: "\f226";
}
.fa-mars-double:before {
  content: "\f227";
}
.fa-venus-mars:before {
  content: "\f228";
}
.fa-mars-stroke:before {
  content: "\f229";
}
.fa-mars-stroke-v:before {
  content: "\f22a";
}
.fa-mars-stroke-h:before {
  content: "\f22b";
}
.fa-neuter:before {
  content: "\f22c";
}
.fa-genderless:before {
  content: "\f22d";
}
.fa-facebook-official:before {
  content: "\f230";
}
.fa-pinterest-p:before {
  content: "\f231";
}
.fa-whatsapp:before {
  content: "\f232";
}
.fa-server:before {
  content: "\f233";
}
.fa-user-plus:before {
  content: "\f234";
}
.fa-user-times:before {
  content: "\f235";
}
.fa-hotel:before,
.fa-bed:before {
  content: "\f236";
}
.fa-viacoin:before {
  content: "\f237";
}
.fa-train:before {
  content: "\f238";
}
.fa-subway:before {
  content: "\f239";
}
.fa-medium:before {
  content: "\f23a";
}
.fa-yc:before,
.fa-y-combinator:before {
  content: "\f23b";
}
.fa-optin-monster:before {
  content: "\f23c";
}
.fa-opencart:before {
  content: "\f23d";
}
.fa-expeditedssl:before {
  content: "\f23e";
}
.fa-battery-4:before,
.fa-battery:before,
.fa-battery-full:before {
  content: "\f240";
}
.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "\f241";
}
.fa-battery-2:before,
.fa-battery-half:before {
  content: "\f242";
}
.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "\f243";
}
.fa-battery-0:before,
.fa-battery-empty:before {
  content: "\f244";
}
.fa-mouse-pointer:before {
  content: "\f245";
}
.fa-i-cursor:before {
  content: "\f246";
}
.fa-object-group:before {
  content: "\f247";
}
.fa-object-ungroup:before {
  content: "\f248";
}
.fa-sticky-note:before {
  content: "\f249";
}
.fa-sticky-note-o:before {
  content: "\f24a";
}
.fa-cc-jcb:before {
  content: "\f24b";
}
.fa-cc-diners-club:before {
  content: "\f24c";
}
.fa-clone:before {
  content: "\f24d";
}
.fa-balance-scale:before {
  content: "\f24e";
}
.fa-hourglass-o:before {
  content: "\f250";
}
.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "\f251";
}
.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "\f252";
}
.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "\f253";
}
.fa-hourglass:before {
  content: "\f254";
}
.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "\f255";
}
.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "\f256";
}
.fa-hand-scissors-o:before {
  content: "\f257";
}
.fa-hand-lizard-o:before {
  content: "\f258";
}
.fa-hand-spock-o:before {
  content: "\f259";
}
.fa-hand-pointer-o:before {
  content: "\f25a";
}
.fa-hand-peace-o:before {
  content: "\f25b";
}
.fa-trademark:before {
  content: "\f25c";
}
.fa-registered:before {
  content: "\f25d";
}
.fa-creative-commons:before {
  content: "\f25e";
}
.fa-gg:before {
  content: "\f260";
}
.fa-gg-circle:before {
  content: "\f261";
}
.fa-tripadvisor:before {
  content: "\f262";
}
.fa-odnoklassniki:before {
  content: "\f263";
}
.fa-odnoklassniki-square:before {
  content: "\f264";
}
.fa-get-pocket:before {
  content: "\f265";
}
.fa-wikipedia-w:before {
  content: "\f266";
}
.fa-safari:before {
  content: "\f267";
}
.fa-chrome:before {
  content: "\f268";
}
.fa-firefox:before {
  content: "\f269";
}
.fa-opera:before {
  content: "\f26a";
}
.fa-internet-explorer:before {
  content: "\f26b";
}
.fa-tv:before,
.fa-television:before {
  content: "\f26c";
}
.fa-contao:before {
  content: "\f26d";
}
.fa-500px:before {
  content: "\f26e";
}
.fa-amazon:before {
  content: "\f270";
}
.fa-calendar-plus-o:before {
  content: "\f271";
}
.fa-calendar-minus-o:before {
  content: "\f272";
}
.fa-calendar-times-o:before {
  content: "\f273";
}
.fa-calendar-check-o:before {
  content: "\f274";
}
.fa-industry:before {
  content: "\f275";
}
.fa-map-pin:before {
  content: "\f276";
}
.fa-map-signs:before {
  content: "\f277";
}
.fa-map-o:before {
  content: "\f278";
}
.fa-map:before {
  content: "\f279";
}
.fa-commenting:before {
  content: "\f27a";
}
.fa-commenting-o:before {
  content: "\f27b";
}
.fa-houzz:before {
  content: "\f27c";
}
.fa-vimeo:before {
  content: "\f27d";
}
.fa-black-tie:before {
  content: "\f27e";
}
.fa-fonticons:before {
  content: "\f280";
}
.fa-reddit-alien:before {
  content: "\f281";
}
.fa-edge:before {
  content: "\f282";
}
.fa-credit-card-alt:before {
  content: "\f283";
}
.fa-codiepie:before {
  content: "\f284";
}
.fa-modx:before {
  content: "\f285";
}
.fa-fort-awesome:before {
  content: "\f286";
}
.fa-usb:before {
  content: "\f287";
}
.fa-product-hunt:before {
  content: "\f288";
}
.fa-mixcloud:before {
  content: "\f289";
}
.fa-scribd:before {
  content: "\f28a";
}
.fa-pause-circle:before {
  content: "\f28b";
}
.fa-pause-circle-o:before {
  content: "\f28c";
}
.fa-stop-circle:before {
  content: "\f28d";
}
.fa-stop-circle-o:before {
  content: "\f28e";
}
.fa-shopping-bag:before {
  content: "\f290";
}
.fa-shopping-basket:before {
  content: "\f291";
}
.fa-hashtag:before {
  content: "\f292";
}
.fa-bluetooth:before {
  content: "\f293";
}
.fa-bluetooth-b:before {
  content: "\f294";
}
.fa-percent:before {
  content: "\f295";
}
.fa-gitlab:before {
  content: "\f296";
}
.fa-wpbeginner:before {
  content: "\f297";
}
.fa-wpforms:before {
  content: "\f298";
}
.fa-envira:before {
  content: "\f299";
}
.fa-universal-access:before {
  content: "\f29a";
}
.fa-wheelchair-alt:before {
  content: "\f29b";
}
.fa-question-circle-o:before {
  content: "\f29c";
}
.fa-blind:before {
  content: "\f29d";
}
.fa-audio-description:before {
  content: "\f29e";
}
.fa-volume-control-phone:before {
  content: "\f2a0";
}
.fa-braille:before {
  content: "\f2a1";
}
.fa-assistive-listening-systems:before {
  content: "\f2a2";
}
.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "\f2a3";
}
.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "\f2a4";
}
.fa-glide:before {
  content: "\f2a5";
}
.fa-glide-g:before {
  content: "\f2a6";
}
.fa-signing:before,
.fa-sign-language:before {
  content: "\f2a7";
}
.fa-low-vision:before {
  content: "\f2a8";
}
.fa-viadeo:before {
  content: "\f2a9";
}
.fa-viadeo-square:before {
  content: "\f2aa";
}
.fa-snapchat:before {
  content: "\f2ab";
}
.fa-snapchat-ghost:before {
  content: "\f2ac";
}
.fa-snapchat-square:before {
  content: "\f2ad";
}
.fa-pied-piper:before {
  content: "\f2ae";
}
.fa-first-order:before {
  content: "\f2b0";
}
.fa-yoast:before {
  content: "\f2b1";
}
.fa-themeisle:before {
  content: "\f2b2";
}
.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "\f2b3";
}
.fa-fa:before,
.fa-font-awesome:before {
  content: "\f2b4";
}
.fa-handshake-o:before {
  content: "\f2b5";
}
.fa-envelope-open:before {
  content: "\f2b6";
}
.fa-envelope-open-o:before {
  content: "\f2b7";
}
.fa-linode:before {
  content: "\f2b8";
}
.fa-address-book:before {
  content: "\f2b9";
}
.fa-address-book-o:before {
  content: "\f2ba";
}
.fa-vcard:before,
.fa-address-card:before {
  content: "\f2bb";
}
.fa-vcard-o:before,
.fa-address-card-o:before {
  content: "\f2bc";
}
.fa-user-circle:before {
  content: "\f2bd";
}
.fa-user-circle-o:before {
  content: "\f2be";
}
.fa-user-o:before {
  content: "\f2c0";
}
.fa-id-badge:before {
  content: "\f2c1";
}
.fa-drivers-license:before,
.fa-id-card:before {
  content: "\f2c2";
}
.fa-drivers-license-o:before,
.fa-id-card-o:before {
  content: "\f2c3";
}
.fa-quora:before {
  content: "\f2c4";
}
.fa-free-code-camp:before {
  content: "\f2c5";
}
.fa-telegram:before {
  content: "\f2c6";
}
.fa-thermometer-4:before,
.fa-thermometer:before,
.fa-thermometer-full:before {
  content: "\f2c7";
}
.fa-thermometer-3:before,
.fa-thermometer-three-quarters:before {
  content: "\f2c8";
}
.fa-thermometer-2:before,
.fa-thermometer-half:before {
  content: "\f2c9";
}
.fa-thermometer-1:before,
.fa-thermometer-quarter:before {
  content: "\f2ca";
}
.fa-thermometer-0:before,
.fa-thermometer-empty:before {
  content: "\f2cb";
}
.fa-shower:before {
  content: "\f2cc";
}
.fa-bathtub:before,
.fa-s15:before,
.fa-bath:before {
  content: "\f2cd";
}
.fa-podcast:before {
  content: "\f2ce";
}
.fa-window-maximize:before {
  content: "\f2d0";
}
.fa-window-minimize:before {
  content: "\f2d1";
}
.fa-window-restore:before {
  content: "\f2d2";
}
.fa-times-rectangle:before,
.fa-window-close:before {
  content: "\f2d3";
}
.fa-times-rectangle-o:before,
.fa-window-close-o:before {
  content: "\f2d4";
}
.fa-bandcamp:before {
  content: "\f2d5";
}
.fa-grav:before {
  content: "\f2d6";
}
.fa-etsy:before {
  content: "\f2d7";
}
.fa-imdb:before {
  content: "\f2d8";
}
.fa-ravelry:before {
  content: "\f2d9";
}
.fa-eercast:before {
  content: "\f2da";
}
.fa-microchip:before {
  content: "\f2db";
}
.fa-snowflake-o:before {
  content: "\f2dc";
}
.fa-superpowers:before {
  content: "\f2dd";
}
.fa-wpexplorer:before {
  content: "\f2de";
}
.fa-meetup:before {
  content: "\f2e0";
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js",
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/googleanalytics/googleanalytics.js\ntype: application/javascript\nmodule-type: startup\n\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"google-analytics\";\nexports.platforms = [\"browser\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// getting parameters\n\tvar GA_ACCOUNT = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsAccount\",\"\").replace(/\\n/g,\"\"),\n\t\tGA_DOMAIN = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsDomain\",\"\").replace(/\\n/g,\"\");\n\tif (GA_DOMAIN == \"\" || GA_DOMAIN == undefined) GA_DOMAIN = \"auto\";\n\n\t// using ga \"isogram\" function\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\n  ga('create', GA_ACCOUNT, GA_DOMAIN);\n  ga('send', 'pageview');\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/tiddlywiki/googleanalytics/readme": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/readme",
            "text": "This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]].\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/googleanalytics]]\n"
        },
        "$:/plugins/tiddlywiki/googleanalytics/settings": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/settings",
            "text": "You have only two value to set, only first is mandatory:\n\n# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'': (mandatory) a code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'': (optional) the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n"
        },
        "$:/plugins/tiddlywiki/googleanalytics/usage": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/usage",
            "text": "!! Create a Google Analytics account\n\nIf you don't already have an account:\n\n# Go to the Google Analytics website: http://www.google.com/analytics/\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\n# Enter the URL where the wiki is hosted\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\n\n!! Install the plugin on your local copy of the TiddlyWiki\n\n# ''Backup your TiddlyWiki''. Just in case\n# Install the plugin via the plugin manager in control panel\n# Save the TiddlyWiki andrefresh the page to load the plugin\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\n# Go to the //settings// tab and edit the parameters\n# Save the TiddlyWiki\n\n!! Upload the new version of your TiddlyWiki\n\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\n# Return to your Google Analytics page to check that your site is being tracked\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold",
            "list-after": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"**\"\n\tsuffix=\"**\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1",
            "list-after": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2",
            "list-after": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3",
            "list-after": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4",
            "list-after": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5",
            "list-after": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6",
            "list-after": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic",
            "list-after": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"*\"\n\tsuffix=\"*\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet",
            "list-after": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number",
            "list-after": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"1.\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line",
            "list-after": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote",
            "list-after": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\">\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/config/markdown/dialect": {
            "title": "$:/config/markdown/dialect",
            "text": "Gruber"
        },
        "$:/language/Docs/Types/text/x-markdown": {
            "title": "$:/language/Docs/Types/text/x-markdown",
            "description": "Markdown",
            "name": "text/x-markdown",
            "group": "Text"
        },
        "$:/plugins/tiddlywiki/markdown/markdown.js": {
            "text": "// Released under MIT license\n// Copyright (c) 2009-2010 Dominic Baggott\n// Copyright (c) 2009-2010 Ash Berlin\n// Copyright (c) 2011 Christoph Dorn <christoph@christophdorn.com> (http://www.christophdorn.com)\n\n/*jshint browser:true, devel:true */\n\n(function( expose ) {\n\n/**\n *  class Markdown\n *\n *  Markdown processing in Javascript done right. We have very particular views\n *  on what constitutes 'right' which include:\n *\n *  - produces well-formed HTML (this means that em and strong nesting is\n *    important)\n *\n *  - has an intermediate representation to allow processing of parsed data (We\n *    in fact have two, both as [JsonML]: a markdown tree and an HTML tree).\n *\n *  - is easily extensible to add new dialects without having to rewrite the\n *    entire parsing mechanics\n *\n *  - has a good test suite\n *\n *  This implementation fulfills all of these (except that the test suite could\n *  do with expanding to automatically run all the fixtures from other Markdown\n *  implementations.)\n *\n *  ##### Intermediate Representation\n *\n *  *TODO* Talk about this :) Its JsonML, but document the node names we use.\n *\n *  [JsonML]: http://jsonml.org/ \"JSON Markup Language\"\n **/\nvar Markdown = expose.Markdown = function(dialect) {\n  switch (typeof dialect) {\n    case \"undefined\":\n      this.dialect = Markdown.dialects.Gruber;\n      break;\n    case \"object\":\n      this.dialect = dialect;\n      break;\n    default:\n      if ( dialect in Markdown.dialects ) {\n        this.dialect = Markdown.dialects[dialect];\n      }\n      else {\n        throw new Error(\"Unknown Markdown dialect '\" + String(dialect) + \"'\");\n      }\n      break;\n  }\n  this.em_state = [];\n  this.strong_state = [];\n  this.debug_indent = \"\";\n};\n\n/**\n *  parse( markdown, [dialect] ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *\n *  Parse `markdown` and return a markdown document as a Markdown.JsonML tree.\n **/\nexpose.parse = function( source, dialect ) {\n  // dialect will default if undefined\n  var md = new Markdown( dialect );\n  return md.toTree( source );\n};\n\n/**\n *  toHTML( markdown, [dialect]  ) -> String\n *  toHTML( md_tree ) -> String\n *  - markdown (String): markdown string to parse\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Take markdown (either as a string or as a JsonML tree) and run it through\n *  [[toHTMLTree]] then turn it into a well-formated HTML fragment.\n **/\nexpose.toHTML = function toHTML( source , dialect , options ) {\n  var input = expose.toHTMLTree( source , dialect , options );\n\n  return expose.renderJsonML( input );\n};\n\n/**\n *  toHTMLTree( markdown, [dialect] ) -> JsonML\n *  toHTMLTree( md_tree ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Turn markdown into HTML, represented as a JsonML tree. If a string is given\n *  to this function, it is first parsed into a markdown tree by calling\n *  [[parse]].\n **/\nexpose.toHTMLTree = function toHTMLTree( input, dialect , options ) {\n  // convert string input to an MD tree\n  if ( typeof input ===\"string\" ) input = this.parse( input, dialect );\n\n  // Now convert the MD tree to an HTML tree\n\n  // remove references from the tree\n  var attrs = extract_attr( input ),\n      refs = {};\n\n  if ( attrs && attrs.references ) {\n    refs = attrs.references;\n  }\n\n  var html = convert_tree_to_html( input, refs , options );\n  merge_text_nodes( html );\n  return html;\n};\n\n// For Spidermonkey based engines\nfunction mk_block_toSource() {\n  return \"Markdown.mk_block( \" +\n          uneval(this.toString()) +\n          \", \" +\n          uneval(this.trailing) +\n          \", \" +\n          uneval(this.lineNumber) +\n          \" )\";\n}\n\n// node\nfunction mk_block_inspect() {\n  var util = require(\"util\");\n  return \"Markdown.mk_block( \" +\n          util.inspect(this.toString()) +\n          \", \" +\n          util.inspect(this.trailing) +\n          \", \" +\n          util.inspect(this.lineNumber) +\n          \" )\";\n\n}\n\nvar mk_block = Markdown.mk_block = function(block, trail, line) {\n  // Be helpful for default case in tests.\n  if ( arguments.length == 1 ) trail = \"\\n\\n\";\n\n  var s = new String(block);\n  s.trailing = trail;\n  // To make it clear its not just a string\n  s.inspect = mk_block_inspect;\n  s.toSource = mk_block_toSource;\n\n  if ( line != undefined )\n    s.lineNumber = line;\n\n  return s;\n};\n\nfunction count_lines( str ) {\n  var n = 0, i = -1;\n  while ( ( i = str.indexOf(\"\\n\", i + 1) ) !== -1 ) n++;\n  return n;\n}\n\n// Internal - split source into rough blocks\nMarkdown.prototype.split_blocks = function splitBlocks( input, startLine ) {\n  input = input.replace(/(\\r\\n|\\n|\\r)/g, \"\\n\");\n  // [\\s\\S] matches _anything_ (newline or space)\n  // [^] is equivalent but doesn't work in IEs.\n  var re = /([\\s\\S]+?)($|\\n#|\\n(?:\\s*\\n|$)+)/g,\n      blocks = [],\n      m;\n\n  var line_no = 1;\n\n  if ( ( m = /^(\\s*\\n)/.exec(input) ) != null ) {\n    // skip (but count) leading blank lines\n    line_no += count_lines( m[0] );\n    re.lastIndex = m[0].length;\n  }\n\n  while ( ( m = re.exec(input) ) !== null ) {\n    if (m[2] == \"\\n#\") {\n      m[2] = \"\\n\";\n      re.lastIndex--;\n    }\n    blocks.push( mk_block( m[1], m[2], line_no ) );\n    line_no += count_lines( m[0] );\n  }\n\n  return blocks;\n};\n\n/**\n *  Markdown#processBlock( block, next ) -> undefined | [ JsonML, ... ]\n *  - block (String): the block to process\n *  - next (Array): the following blocks\n *\n * Process `block` and return an array of JsonML nodes representing `block`.\n *\n * It does this by asking each block level function in the dialect to process\n * the block until one can. Succesful handling is indicated by returning an\n * array (with zero or more JsonML nodes), failure by a false value.\n *\n * Blocks handlers are responsible for calling [[Markdown#processInline]]\n * themselves as appropriate.\n *\n * If the blocks were split incorrectly or adjacent blocks need collapsing you\n * can adjust `next` in place using shift/splice etc.\n *\n * If any of this default behaviour is not right for the dialect, you can\n * define a `__call__` method on the dialect that will get invoked to handle\n * the block processing.\n */\nMarkdown.prototype.processBlock = function processBlock( block, next ) {\n  var cbs = this.dialect.block,\n      ord = cbs.__order__;\n\n  if ( \"__call__\" in cbs ) {\n    return cbs.__call__.call(this, block, next);\n  }\n\n  for ( var i = 0; i < ord.length; i++ ) {\n    //D:this.debug( \"Testing\", ord[i] );\n    var res = cbs[ ord[i] ].call( this, block, next );\n    if ( res ) {\n      //D:this.debug(\"  matched\");\n      if ( !isArray(res) || ( res.length > 0 && !( isArray(res[0]) ) ) )\n        this.debug(ord[i], \"didn't return a proper array\");\n      //D:this.debug( \"\" );\n      return res;\n    }\n  }\n\n  // Uhoh! no match! Should we throw an error?\n  return [];\n};\n\nMarkdown.prototype.processInline = function processInline( block ) {\n  return this.dialect.inline.__call__.call( this, String( block ) );\n};\n\n/**\n *  Markdown#toTree( source ) -> JsonML\n *  - source (String): markdown source to parse\n *\n *  Parse `source` into a JsonML tree representing the markdown document.\n **/\n// custom_tree means set this.tree to `custom_tree` and restore old value on return\nMarkdown.prototype.toTree = function toTree( source, custom_root ) {\n  var blocks = source instanceof Array ? source : this.split_blocks( source );\n\n  // Make tree a member variable so its easier to mess with in extensions\n  var old_tree = this.tree;\n  try {\n    this.tree = custom_root || this.tree || [ \"markdown\" ];\n\n    blocks:\n    while ( blocks.length ) {\n      var b = this.processBlock( blocks.shift(), blocks );\n\n      // Reference blocks and the like won't return any content\n      if ( !b.length ) continue blocks;\n\n      this.tree.push.apply( this.tree, b );\n    }\n    return this.tree;\n  }\n  finally {\n    if ( custom_root ) {\n      this.tree = old_tree;\n    }\n  }\n};\n\n// Noop by default\nMarkdown.prototype.debug = function () {\n  var args = Array.prototype.slice.call( arguments);\n  args.unshift(this.debug_indent);\n  if ( typeof print !== \"undefined\" )\n      print.apply( print, args );\n  if ( typeof console !== \"undefined\" && typeof console.log !== \"undefined\" )\n      console.log.apply( null, args );\n}\n\nMarkdown.prototype.loop_re_over_block = function( re, block, cb ) {\n  // Dont use /g regexps with this\n  var m,\n      b = block.valueOf();\n\n  while ( b.length && (m = re.exec(b) ) != null ) {\n    b = b.substr( m[0].length );\n    cb.call(this, m);\n  }\n  return b;\n};\n\n/**\n * Markdown.dialects\n *\n * Namespace of built-in dialects.\n **/\nMarkdown.dialects = {};\n\n/**\n * Markdown.dialects.Gruber\n *\n * The default dialect that follows the rules set out by John Gruber's\n * markdown.pl as closely as possible. Well actually we follow the behaviour of\n * that script which in some places is not exactly what the syntax web page\n * says.\n **/\nMarkdown.dialects.Gruber = {\n  block: {\n    atxHeader: function atxHeader( block, next ) {\n      var m = block.match( /^(#{1,6})\\s*(.*?)\\s*#*\\s*(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var header = [ \"header\", { level: m[ 1 ].length } ];\n      Array.prototype.push.apply(header, this.processInline(m[ 2 ]));\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    setextHeader: function setextHeader( block, next ) {\n      var m = block.match( /^(.*)\\n([-=])\\2\\2+(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var level = ( m[ 2 ] === \"=\" ) ? 1 : 2;\n      var header = [ \"header\", { level : level }, m[ 1 ] ];\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    code: function code( block, next ) {\n      // |    Foo\n      // |bar\n      // should be a code block followed by a paragraph. Fun\n      //\n      // There might also be adjacent code block to merge.\n\n      var ret = [],\n          re = /^(?: {0,3}\\t| {4})(.*)\\n?/,\n          lines;\n\n      // 4 spaces + content\n      if ( !block.match( re ) ) return undefined;\n\n      block_search:\n      do {\n        // Now pull out the rest of the lines\n        var b = this.loop_re_over_block(\n                  re, block.valueOf(), function( m ) { ret.push( m[1] ); } );\n\n        if ( b.length ) {\n          // Case alluded to in first comment. push it back on as a new block\n          next.unshift( mk_block(b, block.trailing) );\n          break block_search;\n        }\n        else if ( next.length ) {\n          // Check the next block - it might be code too\n          if ( !next[0].match( re ) ) break block_search;\n\n          // Pull how how many blanks lines follow - minus two to account for .join\n          ret.push ( block.trailing.replace(/[^\\n]/g, \"\").substring(2) );\n\n          block = next.shift();\n        }\n        else {\n          break block_search;\n        }\n      } while ( true );\n\n      return [ [ \"code_block\", ret.join(\"\\n\") ] ];\n    },\n\n    horizRule: function horizRule( block, next ) {\n      // this needs to find any hr in the block to handle abutting blocks\n      var m = block.match( /^(?:([\\s\\S]*?)\\n)?[ \\t]*([-_*])(?:[ \\t]*\\2){2,}[ \\t]*(?:\\n([\\s\\S]*))?$/ );\n\n      if ( !m ) {\n        return undefined;\n      }\n\n      var jsonml = [ [ \"hr\" ] ];\n\n      // if there's a leading abutting block, process it\n      if ( m[ 1 ] ) {\n        jsonml.unshift.apply( jsonml, this.processBlock( m[ 1 ], [] ) );\n      }\n\n      // if there's a trailing abutting block, stick it into next\n      if ( m[ 3 ] ) {\n        next.unshift( mk_block( m[ 3 ] ) );\n      }\n\n      return jsonml;\n    },\n\n    // There are two types of lists. Tight and loose. Tight lists have no whitespace\n    // between the items (and result in text just in the <li>) and loose lists,\n    // which have an empty line between list items, resulting in (one or more)\n    // paragraphs inside the <li>.\n    //\n    // There are all sorts weird edge cases about the original markdown.pl's\n    // handling of lists:\n    //\n    // * Nested lists are supposed to be indented by four chars per level. But\n    //   if they aren't, you can get a nested list by indenting by less than\n    //   four so long as the indent doesn't match an indent of an existing list\n    //   item in the 'nest stack'.\n    //\n    // * The type of the list (bullet or number) is controlled just by the\n    //    first item at the indent. Subsequent changes are ignored unless they\n    //    are for nested lists\n    //\n    lists: (function( ) {\n      // Use a closure to hide a few variables.\n      var any_list = \"[*+-]|\\\\d+\\\\.\",\n          bullet_list = /[*+-]/,\n          number_list = /\\d+\\./,\n          // Capture leading indent as it matters for determining nested lists.\n          is_list_re = new RegExp( \"^( {0,3})(\" + any_list + \")[ \\t]+\" ),\n          indent_re = \"(?: {0,3}\\\\t| {4})\";\n\n      // TODO: Cache this regexp for certain depths.\n      // Create a regexp suitable for matching an li for a given stack depth\n      function regex_for_depth( depth ) {\n\n        return new RegExp(\n          // m[1] = indent, m[2] = list_type\n          \"(?:^(\" + indent_re + \"{0,\" + depth + \"} {0,3})(\" + any_list + \")\\\\s+)|\" +\n          // m[3] = cont\n          \"(^\" + indent_re + \"{0,\" + (depth-1) + \"}[ ]{0,4})\"\n        );\n      }\n      function expand_tab( input ) {\n        return input.replace( / {0,3}\\t/g, \"    \" );\n      }\n\n      // Add inline content `inline` to `li`. inline comes from processInline\n      // so is an array of content\n      function add(li, loose, inline, nl) {\n        if ( loose ) {\n          li.push( [ \"para\" ].concat(inline) );\n          return;\n        }\n        // Hmmm, should this be any block level element or just paras?\n        var add_to = li[li.length -1] instanceof Array && li[li.length - 1][0] == \"para\"\n                   ? li[li.length -1]\n                   : li;\n\n        // If there is already some content in this list, add the new line in\n        if ( nl && li.length > 1 ) inline.unshift(nl);\n\n        for ( var i = 0; i < inline.length; i++ ) {\n          var what = inline[i],\n              is_str = typeof what == \"string\";\n          if ( is_str && add_to.length > 1 && typeof add_to[add_to.length-1] == \"string\" ) {\n            add_to[ add_to.length-1 ] += what;\n          }\n          else {\n            add_to.push( what );\n          }\n        }\n      }\n\n      // contained means have an indent greater than the current one. On\n      // *every* line in the block\n      function get_contained_blocks( depth, blocks ) {\n\n        var re = new RegExp( \"^(\" + indent_re + \"{\" + depth + \"}.*?\\\\n?)*$\" ),\n            replace = new RegExp(\"^\" + indent_re + \"{\" + depth + \"}\", \"gm\"),\n            ret = [];\n\n        while ( blocks.length > 0 ) {\n          if ( re.exec( blocks[0] ) ) {\n            var b = blocks.shift(),\n                // Now remove that indent\n                x = b.replace( replace, \"\");\n\n            ret.push( mk_block( x, b.trailing, b.lineNumber ) );\n          }\n          else {\n            break;\n          }\n        }\n        return ret;\n      }\n\n      // passed to stack.forEach to turn list items up the stack into paras\n      function paragraphify(s, i, stack) {\n        var list = s.list;\n        var last_li = list[list.length-1];\n\n        if ( last_li[1] instanceof Array && last_li[1][0] == \"para\" ) {\n          return;\n        }\n        if ( i + 1 == stack.length ) {\n          // Last stack frame\n          // Keep the same array, but replace the contents\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ) );\n        }\n        else {\n          var sublist = last_li.pop();\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ), sublist );\n        }\n      }\n\n      // The matcher function\n      return function( block, next ) {\n        var m = block.match( is_list_re );\n        if ( !m ) return undefined;\n\n        function make_list( m ) {\n          var list = bullet_list.exec( m[2] )\n                   ? [\"bulletlist\"]\n                   : [\"numberlist\"];\n\n          stack.push( { list: list, indent: m[1] } );\n          return list;\n        }\n\n\n        var stack = [], // Stack of lists for nesting.\n            list = make_list( m ),\n            last_li,\n            loose = false,\n            ret = [ stack[0].list ],\n            i;\n\n        // Loop to search over block looking for inner block elements and loose lists\n        loose_search:\n        while ( true ) {\n          // Split into lines preserving new lines at end of line\n          var lines = block.split( /(?=\\n)/ );\n\n          // We have to grab all lines for a li and call processInline on them\n          // once as there are some inline things that can span lines.\n          var li_accumulate = \"\";\n\n          // Loop over the lines in this block looking for tight lists.\n          tight_search:\n          for ( var line_no = 0; line_no < lines.length; line_no++ ) {\n            var nl = \"\",\n                l = lines[line_no].replace(/^\\n/, function(n) { nl = n; return \"\"; });\n\n            // TODO: really should cache this\n            var line_re = regex_for_depth( stack.length );\n\n            m = l.match( line_re );\n            //print( \"line:\", uneval(l), \"\\nline match:\", uneval(m) );\n\n            // We have a list item\n            if ( m[1] !== undefined ) {\n              // Process the previous list item, if any\n              if ( li_accumulate.length ) {\n                add( last_li, loose, this.processInline( li_accumulate ), nl );\n                // Loose mode will have been dealt with. Reset it\n                loose = false;\n                li_accumulate = \"\";\n              }\n\n              m[1] = expand_tab( m[1] );\n              var wanted_depth = Math.floor(m[1].length/4)+1;\n              //print( \"want:\", wanted_depth, \"stack:\", stack.length);\n              if ( wanted_depth > stack.length ) {\n                // Deep enough for a nested list outright\n                //print ( \"new nested list\" );\n                list = make_list( m );\n                last_li.push( list );\n                last_li = list[1] = [ \"listitem\" ];\n              }\n              else {\n                // We aren't deep enough to be strictly a new level. This is\n                // where Md.pl goes nuts. If the indent matches a level in the\n                // stack, put it there, else put it one deeper then the\n                // wanted_depth deserves.\n                var found = false;\n                for ( i = 0; i < stack.length; i++ ) {\n                  if ( stack[ i ].indent != m[1] ) continue;\n                  list = stack[ i ].list;\n                  stack.splice( i+1, stack.length - (i+1) );\n                  found = true;\n                  break;\n                }\n\n                if (!found) {\n                  //print(\"not found. l:\", uneval(l));\n                  wanted_depth++;\n                  if ( wanted_depth <= stack.length ) {\n                    stack.splice(wanted_depth, stack.length - wanted_depth);\n                    //print(\"Desired depth now\", wanted_depth, \"stack:\", stack.length);\n                    list = stack[wanted_depth-1].list;\n                    //print(\"list:\", uneval(list) );\n                  }\n                  else {\n                    //print (\"made new stack for messy indent\");\n                    list = make_list(m);\n                    last_li.push(list);\n                  }\n                }\n\n                //print( uneval(list), \"last\", list === stack[stack.length-1].list );\n                last_li = [ \"listitem\" ];\n                list.push(last_li);\n              } // end depth of shenegains\n              nl = \"\";\n            }\n\n            // Add content\n            if ( l.length > m[0].length ) {\n              li_accumulate += nl + l.substr( m[0].length );\n            }\n          } // tight_search\n\n          if ( li_accumulate.length ) {\n            add( last_li, loose, this.processInline( li_accumulate ), nl );\n            // Loose mode will have been dealt with. Reset it\n            loose = false;\n            li_accumulate = \"\";\n          }\n\n          // Look at the next block - we might have a loose list. Or an extra\n          // paragraph for the current li\n          var contained = get_contained_blocks( stack.length, next );\n\n          // Deal with code blocks or properly nested lists\n          if ( contained.length > 0 ) {\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            last_li.push.apply( last_li, this.toTree( contained, [] ) );\n          }\n\n          var next_block = next[0] && next[0].valueOf() || \"\";\n\n          if ( next_block.match(is_list_re) || next_block.match( /^ / ) ) {\n            block = next.shift();\n\n            // Check for an HR following a list: features/lists/hr_abutting\n            var hr = this.dialect.block.horizRule( block, next );\n\n            if ( hr ) {\n              ret.push.apply(ret, hr);\n              break;\n            }\n\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            loose = true;\n            continue loose_search;\n          }\n          break;\n        } // loose_search\n\n        return ret;\n      };\n    })(),\n\n    blockquote: function blockquote( block, next ) {\n      if ( !block.match( /^>/m ) )\n        return undefined;\n\n      var jsonml = [];\n\n      // separate out the leading abutting block, if any. I.e. in this case:\n      //\n      //  a\n      //  > b\n      //\n      if ( block[ 0 ] != \">\" ) {\n        var lines = block.split( /\\n/ ),\n            prev = [],\n            line_no = block.lineNumber;\n\n        // keep shifting lines until you find a crotchet\n        while ( lines.length && lines[ 0 ][ 0 ] != \">\" ) {\n            prev.push( lines.shift() );\n            line_no++;\n        }\n\n        var abutting = mk_block( prev.join( \"\\n\" ), \"\\n\", block.lineNumber );\n        jsonml.push.apply( jsonml, this.processBlock( abutting, [] ) );\n        // reassemble new block of just block quotes!\n        block = mk_block( lines.join( \"\\n\" ), block.trailing, line_no );\n      }\n\n\n      // if the next block is also a blockquote merge it in\n      while ( next.length && next[ 0 ][ 0 ] == \">\" ) {\n        var b = next.shift();\n        block = mk_block( block + block.trailing + b, b.trailing, block.lineNumber );\n      }\n\n      // Strip off the leading \"> \" and re-process as a block.\n      var input = block.replace( /^> ?/gm, \"\" ),\n          old_tree = this.tree,\n          processedBlock = this.toTree( input, [ \"blockquote\" ] ),\n          attr = extract_attr( processedBlock );\n\n      // If any link references were found get rid of them\n      if ( attr && attr.references ) {\n        delete attr.references;\n        // And then remove the attribute object if it's empty\n        if ( isEmpty( attr ) ) {\n          processedBlock.splice( 1, 1 );\n        }\n      }\n\n      jsonml.push( processedBlock );\n      return jsonml;\n    },\n\n    referenceDefn: function referenceDefn( block, next) {\n      var re = /^\\s*\\[(.*?)\\]:\\s*(\\S+)(?:\\s+(?:(['\"])(.*?)\\3|\\((.*?)\\)))?\\n?/;\n      // interesting matches are [ , ref_id, url, , title, title ]\n\n      if ( !block.match(re) )\n        return undefined;\n\n      // make an attribute node if it doesn't exist\n      if ( !extract_attr( this.tree ) ) {\n        this.tree.splice( 1, 0, {} );\n      }\n\n      var attrs = extract_attr( this.tree );\n\n      // make a references hash if it doesn't exist\n      if ( attrs.references === undefined ) {\n        attrs.references = {};\n      }\n\n      var b = this.loop_re_over_block(re, block, function( m ) {\n\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        var ref = attrs.references[ m[1].toLowerCase() ] = {\n          href: m[2]\n        };\n\n        if ( m[4] !== undefined )\n          ref.title = m[4];\n        else if ( m[5] !== undefined )\n          ref.title = m[5];\n\n      } );\n\n      if ( b.length )\n        next.unshift( mk_block( b, block.trailing ) );\n\n      return [];\n    },\n\n    para: function para( block, next ) {\n      // everything's a para!\n      return [ [\"para\"].concat( this.processInline( block ) ) ];\n    }\n  }\n};\n\nMarkdown.dialects.Gruber.inline = {\n\n    __oneElement__: function oneElement( text, patterns_or_re, previous_nodes ) {\n      var m,\n          res,\n          lastIndex = 0;\n\n      patterns_or_re = patterns_or_re || this.dialect.inline.__patterns__;\n      var re = new RegExp( \"([\\\\s\\\\S]*?)(\" + (patterns_or_re.source || patterns_or_re) + \")\" );\n\n      m = re.exec( text );\n      if (!m) {\n        // Just boring text\n        return [ text.length, text ];\n      }\n      else if ( m[1] ) {\n        // Some un-interesting text matched. Return that first\n        return [ m[1].length, m[1] ];\n      }\n\n      var res;\n      if ( m[2] in this.dialect.inline ) {\n        res = this.dialect.inline[ m[2] ].call(\n                  this,\n                  text.substr( m.index ), m, previous_nodes || [] );\n      }\n      // Default for now to make dev easier. just slurp special and output it.\n      res = res || [ m[2].length, m[2] ];\n      return res;\n    },\n\n    __call__: function inline( text, patterns ) {\n\n      var out = [],\n          res;\n\n      function add(x) {\n        //D:self.debug(\"  adding output\", uneval(x));\n        if ( typeof x == \"string\" && typeof out[out.length-1] == \"string\" )\n          out[ out.length-1 ] += x;\n        else\n          out.push(x);\n      }\n\n      while ( text.length > 0 ) {\n        res = this.dialect.inline.__oneElement__.call(this, text, patterns, out );\n        text = text.substr( res.shift() );\n        forEach(res, add )\n      }\n\n      return out;\n    },\n\n    // These characters are intersting elsewhere, so have rules for them so that\n    // chunks of plain text blocks don't include them\n    \"]\": function () {},\n    \"}\": function () {},\n\n    __escape__ : /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-]/,\n\n    \"\\\\\": function escaped( text ) {\n      // [ length of input processed, node/children to add... ]\n      // Only esacape: \\ ` * _ { } [ ] ( ) # * + - . !\n      if ( this.dialect.inline.__escape__.exec( text ) )\n        return [ 2, text.charAt( 1 ) ];\n      else\n        // Not an esacpe\n        return [ 1, \"\\\\\" ];\n    },\n\n    \"![\": function image( text ) {\n\n      // Unlike images, alt text is plain text only. no other elements are\n      // allowed in there\n\n      // ![Alt text](/path/to/img.jpg \"Optional title\")\n      //      1          2            3       4         <--- captures\n      var m = text.match( /^!\\[(.*?)\\][ \\t]*\\([ \\t]*([^\")]*?)(?:[ \\t]+([\"'])(.*?)\\3)?[ \\t]*\\)/ );\n\n      if ( m ) {\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        m[2] = this.dialect.inline.__call__.call( this, m[2], /\\\\/ )[0];\n\n        var attrs = { alt: m[1], href: m[2] || \"\" };\n        if ( m[4] !== undefined)\n          attrs.title = m[4];\n\n        return [ m[0].length, [ \"img\", attrs ] ];\n      }\n\n      // ![Alt text][id]\n      m = text.match( /^!\\[(.*?)\\][ \\t]*\\[(.*?)\\]/ );\n\n      if ( m ) {\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion\n        return [ m[0].length, [ \"img_ref\", { alt: m[1], ref: m[2].toLowerCase(), original: m[0] } ] ];\n      }\n\n      // Just consume the '!['\n      return [ 2, \"![\" ];\n    },\n\n    \"[\": function link( text ) {\n\n      var orig = String(text);\n      // Inline content is possible inside `link text`\n      var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), \"]\" );\n\n      // No closing ']' found. Just consume the [\n      if ( !res ) return [ 1, \"[\" ];\n\n      var consumed = 1 + res[ 0 ],\n          children = res[ 1 ],\n          link,\n          attrs;\n\n      // At this point the first [...] has been parsed. See what follows to find\n      // out which kind of link we are (reference or direct url)\n      text = text.substr( consumed );\n\n      // [link text](/path/to/img.jpg \"Optional title\")\n      //                 1            2       3         <--- captures\n      // This will capture up to the last paren in the block. We then pull\n      // back based on if there a matching ones in the url\n      //    ([here](/url/(test))\n      // The parens have to be balanced\n      var m = text.match( /^\\s*\\([ \\t]*([^\"']*)(?:[ \\t]+([\"'])(.*?)\\2)?[ \\t]*\\)/ );\n      if ( m ) {\n        var url = m[1];\n        consumed += m[0].length;\n\n        if ( url && url[0] == \"<\" && url[url.length-1] == \">\" )\n          url = url.substring( 1, url.length - 1 );\n\n        // If there is a title we don't have to worry about parens in the url\n        if ( !m[3] ) {\n          var open_parens = 1; // One open that isn't in the capture\n          for ( var len = 0; len < url.length; len++ ) {\n            switch ( url[len] ) {\n            case \"(\":\n              open_parens++;\n              break;\n            case \")\":\n              if ( --open_parens == 0) {\n                consumed -= url.length - len;\n                url = url.substring(0, len);\n              }\n              break;\n            }\n          }\n        }\n\n        // Process escapes only\n        url = this.dialect.inline.__call__.call( this, url, /\\\\/ )[0];\n\n        attrs = { href: url || \"\" };\n        if ( m[3] !== undefined)\n          attrs.title = m[3];\n\n        link = [ \"link\", attrs ].concat( children );\n        return [ consumed, link ];\n      }\n\n      // [Alt text][id]\n      // [Alt text] [id]\n      m = text.match( /^\\s*\\[(.*?)\\]/ );\n\n      if ( m ) {\n\n        consumed += m[ 0 ].length;\n\n        // [links][] uses links as its reference\n        attrs = { ref: ( m[ 1 ] || String(children) ).toLowerCase(),  original: orig.substr( 0, consumed ) };\n\n        link = [ \"link_ref\", attrs ].concat( children );\n\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion.\n        // Store the original so that conversion can revert if the ref isn't found.\n        return [ consumed, link ];\n      }\n\n      // [id]\n      // Only if id is plain (no formatting.)\n      if ( children.length == 1 && typeof children[0] == \"string\" ) {\n\n        attrs = { ref: children[0].toLowerCase(),  original: orig.substr( 0, consumed ) };\n        link = [ \"link_ref\", attrs, children[0] ];\n        return [ consumed, link ];\n      }\n\n      // Just consume the \"[\"\n      return [ 1, \"[\" ];\n    },\n\n\n    \"<\": function autoLink( text ) {\n      var m;\n\n      if ( ( m = text.match( /^<(?:((https?|ftp|mailto):[^>]+)|(.*?@.*?\\.[a-zA-Z]+))>/ ) ) != null ) {\n        if ( m[3] ) {\n          return [ m[0].length, [ \"link\", { href: \"mailto:\" + m[3] }, m[3] ] ];\n\n        }\n        else if ( m[2] == \"mailto\" ) {\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1].substr(\"mailto:\".length ) ] ];\n        }\n        else\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1] ] ];\n      }\n\n      return [ 1, \"<\" ];\n    },\n\n    \"`\": function inlineCode( text ) {\n      // Inline code block. as many backticks as you like to start it\n      // Always skip over the opening ticks.\n      var m = text.match( /(`+)(([\\s\\S]*?)\\1)/ );\n\n      if ( m && m[2] )\n        return [ m[1].length + m[2].length, [ \"inlinecode\", m[3] ] ];\n      else {\n        // TODO: No matching end code found - warn!\n        return [ 1, \"`\" ];\n      }\n    },\n\n    \"  \\n\": function lineBreak( text ) {\n      return [ 3, [ \"linebreak\" ] ];\n    }\n\n};\n\n// Meta Helper/generator method for em and strong handling\nfunction strong_em( tag, md ) {\n\n  var state_slot = tag + \"_state\",\n      other_slot = tag == \"strong\" ? \"em_state\" : \"strong_state\";\n\n  function CloseTag(len) {\n    this.len_after = len;\n    this.name = \"close_\" + md;\n  }\n\n  return function ( text, orig_match ) {\n\n    if ( this[state_slot][0] == md ) {\n      // Most recent em is of this type\n      //D:this.debug(\"closing\", md);\n      this[state_slot].shift();\n\n      // \"Consume\" everything to go back to the recrusion in the else-block below\n      return[ text.length, new CloseTag(text.length-md.length) ];\n    }\n    else {\n      // Store a clone of the em/strong states\n      var other = this[other_slot].slice(),\n          state = this[state_slot].slice();\n\n      this[state_slot].unshift(md);\n\n      //D:this.debug_indent += \"  \";\n\n      // Recurse\n      var res = this.processInline( text.substr( md.length ) );\n      //D:this.debug_indent = this.debug_indent.substr(2);\n\n      var last = res[res.length - 1];\n\n      //D:this.debug(\"processInline from\", tag + \": \", uneval( res ) );\n\n      var check = this[state_slot].shift();\n      if ( last instanceof CloseTag ) {\n        res.pop();\n        // We matched! Huzzah.\n        var consumed = text.length - last.len_after;\n        return [ consumed, [ tag ].concat(res) ];\n      }\n      else {\n        // Restore the state of the other kind. We might have mistakenly closed it.\n        this[other_slot] = other;\n        this[state_slot] = state;\n\n        // We can't reuse the processed result as it could have wrong parsing contexts in it.\n        return [ md.length, md ];\n      }\n    }\n  }; // End returned function\n}\n\nMarkdown.dialects.Gruber.inline[\"**\"] = strong_em(\"strong\", \"**\");\nMarkdown.dialects.Gruber.inline[\"__\"] = strong_em(\"strong\", \"__\");\nMarkdown.dialects.Gruber.inline[\"*\"]  = strong_em(\"em\", \"*\");\nMarkdown.dialects.Gruber.inline[\"_\"]  = strong_em(\"em\", \"_\");\n\n\n// Build default order from insertion order.\nMarkdown.buildBlockOrder = function(d) {\n  var ord = [];\n  for ( var i in d ) {\n    if ( i == \"__order__\" || i == \"__call__\" ) continue;\n    ord.push( i );\n  }\n  d.__order__ = ord;\n};\n\n// Build patterns for inline matcher\nMarkdown.buildInlinePatterns = function(d) {\n  var patterns = [];\n\n  for ( var i in d ) {\n    // __foo__ is reserved and not a pattern\n    if ( i.match( /^__.*__$/) ) continue;\n    var l = i.replace( /([\\\\.*+?|()\\[\\]{}])/g, \"\\\\$1\" )\n             .replace( /\\n/, \"\\\\n\" );\n    patterns.push( i.length == 1 ? l : \"(?:\" + l + \")\" );\n  }\n\n  patterns = patterns.join(\"|\");\n  d.__patterns__ = patterns;\n  //print(\"patterns:\", uneval( patterns ) );\n\n  var fn = d.__call__;\n  d.__call__ = function(text, pattern) {\n    if ( pattern != undefined ) {\n      return fn.call(this, text, pattern);\n    }\n    else\n    {\n      return fn.call(this, text, patterns);\n    }\n  };\n};\n\nMarkdown.DialectHelpers = {};\nMarkdown.DialectHelpers.inline_until_char = function( text, want ) {\n  var consumed = 0,\n      nodes = [];\n\n  while ( true ) {\n    if ( text.charAt( consumed ) == want ) {\n      // Found the character we were looking for\n      consumed++;\n      return [ consumed, nodes ];\n    }\n\n    if ( consumed >= text.length ) {\n      // No closing char found. Abort.\n      return null;\n    }\n\n    var res = this.dialect.inline.__oneElement__.call(this, text.substr( consumed ) );\n    consumed += res[ 0 ];\n    // Add any returned nodes.\n    nodes.push.apply( nodes, res.slice( 1 ) );\n  }\n}\n\n// Helper function to make sub-classing a dialect easier\nMarkdown.subclassDialect = function( d ) {\n  function Block() {}\n  Block.prototype = d.block;\n  function Inline() {}\n  Inline.prototype = d.inline;\n\n  return { block: new Block(), inline: new Inline() };\n};\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Gruber.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Gruber.inline );\n\nMarkdown.dialects.Maruku = Markdown.subclassDialect( Markdown.dialects.Gruber );\n\nMarkdown.dialects.Maruku.processMetaHash = function processMetaHash( meta_string ) {\n  var meta = split_meta_hash( meta_string ),\n      attr = {};\n\n  for ( var i = 0; i < meta.length; ++i ) {\n    // id: #foo\n    if ( /^#/.test( meta[ i ] ) ) {\n      attr.id = meta[ i ].substring( 1 );\n    }\n    // class: .foo\n    else if ( /^\\./.test( meta[ i ] ) ) {\n      // if class already exists, append the new one\n      if ( attr[\"class\"] ) {\n        attr[\"class\"] = attr[\"class\"] + meta[ i ].replace( /./, \" \" );\n      }\n      else {\n        attr[\"class\"] = meta[ i ].substring( 1 );\n      }\n    }\n    // attribute: foo=bar\n    else if ( /\\=/.test( meta[ i ] ) ) {\n      var s = meta[ i ].split( /\\=/ );\n      attr[ s[ 0 ] ] = s[ 1 ];\n    }\n  }\n\n  return attr;\n}\n\nfunction split_meta_hash( meta_string ) {\n  var meta = meta_string.split( \"\" ),\n      parts = [ \"\" ],\n      in_quotes = false;\n\n  while ( meta.length ) {\n    var letter = meta.shift();\n    switch ( letter ) {\n      case \" \" :\n        // if we're in a quoted section, keep it\n        if ( in_quotes ) {\n          parts[ parts.length - 1 ] += letter;\n        }\n        // otherwise make a new part\n        else {\n          parts.push( \"\" );\n        }\n        break;\n      case \"'\" :\n      case '\"' :\n        // reverse the quotes and move straight on\n        in_quotes = !in_quotes;\n        break;\n      case \"\\\\\" :\n        // shift off the next letter to be used straight away.\n        // it was escaped so we'll keep it whatever it is\n        letter = meta.shift();\n      default :\n        parts[ parts.length - 1 ] += letter;\n        break;\n    }\n  }\n\n  return parts;\n}\n\nMarkdown.dialects.Maruku.block.document_meta = function document_meta( block, next ) {\n  // we're only interested in the first block\n  if ( block.lineNumber > 1 ) return undefined;\n\n  // document_meta blocks consist of one or more lines of `Key: Value\\n`\n  if ( ! block.match( /^(?:\\w+:.*\\n)*\\w+:.*$/ ) ) return undefined;\n\n  // make an attribute node if it doesn't exist\n  if ( !extract_attr( this.tree ) ) {\n    this.tree.splice( 1, 0, {} );\n  }\n\n  var pairs = block.split( /\\n/ );\n  for ( p in pairs ) {\n    var m = pairs[ p ].match( /(\\w+):\\s*(.*)$/ ),\n        key = m[ 1 ].toLowerCase(),\n        value = m[ 2 ];\n\n    this.tree[ 1 ][ key ] = value;\n  }\n\n  // document_meta produces no content!\n  return [];\n};\n\nMarkdown.dialects.Maruku.block.block_meta = function block_meta( block, next ) {\n  // check if the last line of the block is an meta hash\n  var m = block.match( /(^|\\n) {0,3}\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}$/ );\n  if ( !m ) return undefined;\n\n  // process the meta hash\n  var attr = this.dialect.processMetaHash( m[ 2 ] );\n\n  var hash;\n\n  // if we matched ^ then we need to apply meta to the previous block\n  if ( m[ 1 ] === \"\" ) {\n    var node = this.tree[ this.tree.length - 1 ];\n    hash = extract_attr( node );\n\n    // if the node is a string (rather than JsonML), bail\n    if ( typeof node === \"string\" ) return undefined;\n\n    // create the attribute hash if it doesn't exist\n    if ( !hash ) {\n      hash = {};\n      node.splice( 1, 0, hash );\n    }\n\n    // add the attributes in\n    for ( a in attr ) {\n      hash[ a ] = attr[ a ];\n    }\n\n    // return nothing so the meta hash is removed\n    return [];\n  }\n\n  // pull the meta hash off the block and process what's left\n  var b = block.replace( /\\n.*$/, \"\" ),\n      result = this.processBlock( b, [] );\n\n  // get or make the attributes hash\n  hash = extract_attr( result[ 0 ] );\n  if ( !hash ) {\n    hash = {};\n    result[ 0 ].splice( 1, 0, hash );\n  }\n\n  // attach the attributes to the block\n  for ( a in attr ) {\n    hash[ a ] = attr[ a ];\n  }\n\n  return result;\n};\n\nMarkdown.dialects.Maruku.block.definition_list = function definition_list( block, next ) {\n  // one or more terms followed by one or more definitions, in a single block\n  var tight = /^((?:[^\\s:].*\\n)+):\\s+([\\s\\S]+)$/,\n      list = [ \"dl\" ],\n      i, m;\n\n  // see if we're dealing with a tight or loose block\n  if ( ( m = block.match( tight ) ) ) {\n    // pull subsequent tight DL blocks out of `next`\n    var blocks = [ block ];\n    while ( next.length && tight.exec( next[ 0 ] ) ) {\n      blocks.push( next.shift() );\n    }\n\n    for ( var b = 0; b < blocks.length; ++b ) {\n      var m = blocks[ b ].match( tight ),\n          terms = m[ 1 ].replace( /\\n$/, \"\" ).split( /\\n/ ),\n          defns = m[ 2 ].split( /\\n:\\s+/ );\n\n      // print( uneval( m ) );\n\n      for ( i = 0; i < terms.length; ++i ) {\n        list.push( [ \"dt\", terms[ i ] ] );\n      }\n\n      for ( i = 0; i < defns.length; ++i ) {\n        // run inline processing over the definition\n        list.push( [ \"dd\" ].concat( this.processInline( defns[ i ].replace( /(\\n)\\s+/, \"$1\" ) ) ) );\n      }\n    }\n  }\n  else {\n    return undefined;\n  }\n\n  return [ list ];\n};\n\n// splits on unescaped instances of @ch. If @ch is not a character the result\n// can be unpredictable\n\nMarkdown.dialects.Maruku.block.table = function table (block, next) {\n\n    var _split_on_unescaped = function(s, ch) {\n        ch = ch || '\\\\s';\n        if (ch.match(/^[\\\\|\\[\\]{}?*.+^$]$/)) { ch = '\\\\' + ch; }\n        var res = [ ],\n            r = new RegExp('^((?:\\\\\\\\.|[^\\\\\\\\' + ch + '])*)' + ch + '(.*)'),\n            m;\n        while(m = s.match(r)) {\n            res.push(m[1]);\n            s = m[2];\n        }\n        res.push(s);\n        return res;\n    }\n\n    var leading_pipe = /^ {0,3}\\|(.+)\\n {0,3}\\|\\s*([\\-:]+[\\-| :]*)\\n((?:\\s*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        // find at least an unescaped pipe in each line\n        no_leading_pipe = /^ {0,3}(\\S(?:\\\\.|[^\\\\|])*\\|.*)\\n {0,3}([\\-:]+\\s*\\|[\\-| :]*)\\n((?:(?:\\\\.|[^\\\\|])*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        i, m;\n    if (m = block.match(leading_pipe)) {\n        // remove leading pipes in contents\n        // (header and horizontal rule already have the leading pipe left out)\n        m[3] = m[3].replace(/^\\s*\\|/gm, '');\n    } else if (! ( m = block.match(no_leading_pipe))) {\n        return undefined;\n    }\n\n    var table = [ \"table\", [ \"thead\", [ \"tr\" ] ], [ \"tbody\" ] ];\n\n    // remove trailing pipes, then split on pipes\n    // (no escaped pipes are allowed in horizontal rule)\n    m[2] = m[2].replace(/\\|\\s*$/, '').split('|');\n\n    // process alignment\n    var html_attrs = [ ];\n    forEach (m[2], function (s) {\n        if (s.match(/^\\s*-+:\\s*$/))       html_attrs.push({align: \"right\"});\n        else if (s.match(/^\\s*:-+\\s*$/))  html_attrs.push({align: \"left\"});\n        else if (s.match(/^\\s*:-+:\\s*$/)) html_attrs.push({align: \"center\"});\n        else                              html_attrs.push({});\n    });\n\n    // now for the header, avoid escaped pipes\n    m[1] = _split_on_unescaped(m[1].replace(/\\|\\s*$/, ''), '|');\n    for (i = 0; i < m[1].length; i++) {\n        table[1][1].push(['th', html_attrs[i] || {}].concat(\n            this.processInline(m[1][i].trim())));\n    }\n\n    // now for body contents\n    forEach (m[3].replace(/\\|\\s*$/mg, '').split('\\n'), function (row) {\n        var html_row = ['tr'];\n        row = _split_on_unescaped(row, '|');\n        for (i = 0; i < row.length; i++) {\n            html_row.push(['td', html_attrs[i] || {}].concat(this.processInline(row[i].trim())));\n        }\n        table[2].push(html_row);\n    }, this);\n\n    return [table];\n}\n\nMarkdown.dialects.Maruku.inline[ \"{:\" ] = function inline_meta( text, matches, out ) {\n  if ( !out.length ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // get the preceeding element\n  var before = out[ out.length - 1 ];\n\n  if ( typeof before === \"string\" ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // match a meta hash\n  var m = text.match( /^\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}/ );\n\n  // no match, false alarm\n  if ( !m ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // attach the attributes to the preceeding element\n  var meta = this.dialect.processMetaHash( m[ 1 ] ),\n      attr = extract_attr( before );\n\n  if ( !attr ) {\n    attr = {};\n    before.splice( 1, 0, attr );\n  }\n\n  for ( var k in meta ) {\n    attr[ k ] = meta[ k ];\n  }\n\n  // cut out the string and replace it with nothing\n  return [ m[ 0 ].length, \"\" ];\n};\n\nMarkdown.dialects.Maruku.inline.__escape__ = /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-|:]/;\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Maruku.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Maruku.inline );\n\nvar isArray = Array.isArray || function(obj) {\n  return Object.prototype.toString.call(obj) == \"[object Array]\";\n};\n\nvar forEach;\n// Don't mess with Array.prototype. Its not friendly\nif ( Array.prototype.forEach ) {\n  forEach = function( arr, cb, thisp ) {\n    return arr.forEach( cb, thisp );\n  };\n}\nelse {\n  forEach = function(arr, cb, thisp) {\n    for (var i = 0; i < arr.length; i++) {\n      cb.call(thisp || arr, arr[i], i, arr);\n    }\n  }\n}\n\nvar isEmpty = function( obj ) {\n  for ( var key in obj ) {\n    if ( hasOwnProperty.call( obj, key ) ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction extract_attr( jsonml ) {\n  return isArray(jsonml)\n      && jsonml.length > 1\n      && typeof jsonml[ 1 ] === \"object\"\n      && !( isArray(jsonml[ 1 ]) )\n      ? jsonml[ 1 ]\n      : undefined;\n}\n\n\n\n/**\n *  renderJsonML( jsonml[, options] ) -> String\n *  - jsonml (Array): JsonML array to render to XML\n *  - options (Object): options\n *\n *  Converts the given JsonML into well-formed XML.\n *\n *  The options currently understood are:\n *\n *  - root (Boolean): wether or not the root node should be included in the\n *    output, or just its children. The default `false` is to not include the\n *    root itself.\n */\nexpose.renderJsonML = function( jsonml, options ) {\n  options = options || {};\n  // include the root element in the rendered output?\n  options.root = options.root || false;\n\n  var content = [];\n\n  if ( options.root ) {\n    content.push( render_tree( jsonml ) );\n  }\n  else {\n    jsonml.shift(); // get rid of the tag\n    if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n      jsonml.shift(); // get rid of the attributes\n    }\n\n    while ( jsonml.length ) {\n      content.push( render_tree( jsonml.shift() ) );\n    }\n  }\n\n  return content.join( \"\\n\\n\" );\n};\n\nfunction escapeHTML( text ) {\n  return text.replace( /&/g, \"&amp;\" )\n             .replace( /</g, \"&lt;\" )\n             .replace( />/g, \"&gt;\" )\n             .replace( /\"/g, \"&quot;\" )\n             .replace( /'/g, \"&#39;\" );\n}\n\nfunction render_tree( jsonml ) {\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return escapeHTML( jsonml );\n  }\n\n  var tag = jsonml.shift(),\n      attributes = {},\n      content = [];\n\n  if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n    attributes = jsonml.shift();\n  }\n\n  while ( jsonml.length ) {\n    content.push( render_tree( jsonml.shift() ) );\n  }\n\n  var tag_attrs = \"\";\n  for ( var a in attributes ) {\n    tag_attrs += \" \" + a + '=\"' + escapeHTML( attributes[ a ] ) + '\"';\n  }\n\n  // be careful about adding whitespace here for inline elements\n  if ( tag == \"img\" || tag == \"br\" || tag == \"hr\" ) {\n    return \"<\"+ tag + tag_attrs + \"/>\";\n  }\n  else {\n    return \"<\"+ tag + tag_attrs + \">\" + content.join( \"\" ) + \"</\" + tag + \">\";\n  }\n}\n\nfunction convert_tree_to_html( tree, references, options ) {\n  var i;\n  options = options || {};\n\n  // shallow clone\n  var jsonml = tree.slice( 0 );\n\n  if ( typeof options.preprocessTreeNode === \"function\" ) {\n      jsonml = options.preprocessTreeNode(jsonml, references);\n  }\n\n  // Clone attributes if they exist\n  var attrs = extract_attr( jsonml );\n  if ( attrs ) {\n    jsonml[ 1 ] = {};\n    for ( i in attrs ) {\n      jsonml[ 1 ][ i ] = attrs[ i ];\n    }\n    attrs = jsonml[ 1 ];\n  }\n\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return jsonml;\n  }\n\n  // convert this node\n  switch ( jsonml[ 0 ] ) {\n    case \"header\":\n      jsonml[ 0 ] = \"h\" + jsonml[ 1 ].level;\n      delete jsonml[ 1 ].level;\n      break;\n    case \"bulletlist\":\n      jsonml[ 0 ] = \"ul\";\n      break;\n    case \"numberlist\":\n      jsonml[ 0 ] = \"ol\";\n      break;\n    case \"listitem\":\n      jsonml[ 0 ] = \"li\";\n      break;\n    case \"para\":\n      jsonml[ 0 ] = \"p\";\n      break;\n    case \"markdown\":\n      jsonml[ 0 ] = \"html\";\n      if ( attrs ) delete attrs.references;\n      break;\n    case \"code_block\":\n      jsonml[ 0 ] = \"pre\";\n      i = attrs ? 2 : 1;\n      var code = [ \"code\" ];\n      code.push.apply( code, jsonml.splice( i, jsonml.length - i ) );\n      jsonml[ i ] = code;\n      break;\n    case \"inlinecode\":\n      jsonml[ 0 ] = \"code\";\n      break;\n    case \"img\":\n      jsonml[ 1 ].src = jsonml[ 1 ].href;\n      delete jsonml[ 1 ].href;\n      break;\n    case \"linebreak\":\n      jsonml[ 0 ] = \"br\";\n    break;\n    case \"link\":\n      jsonml[ 0 ] = \"a\";\n      break;\n    case \"link_ref\":\n      jsonml[ 0 ] = \"a\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.href = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n    case \"img_ref\":\n      jsonml[ 0 ] = \"img\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.src = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n  }\n\n  // convert all the children\n  i = 1;\n\n  // deal with the attribute node, if it exists\n  if ( attrs ) {\n    // if there are keys, skip over it\n    for ( var key in jsonml[ 1 ] ) {\n        i = 2;\n        break;\n    }\n    // if there aren't, remove it\n    if ( i === 1 ) {\n      jsonml.splice( i, 1 );\n    }\n  }\n\n  for ( ; i < jsonml.length; ++i ) {\n    jsonml[ i ] = convert_tree_to_html( jsonml[ i ], references, options );\n  }\n\n  return jsonml;\n}\n\n\n// merges adjacent text nodes into a single node\nfunction merge_text_nodes( jsonml ) {\n  // skip the tag name and attribute hash\n  var i = extract_attr( jsonml ) ? 2 : 1;\n\n  while ( i < jsonml.length ) {\n    // if it's a string check the next item too\n    if ( typeof jsonml[ i ] === \"string\" ) {\n      if ( i + 1 < jsonml.length && typeof jsonml[ i + 1 ] === \"string\" ) {\n        // merge the second string into the first and remove it\n        jsonml[ i ] += jsonml.splice( i + 1, 1 )[ 0 ];\n      }\n      else {\n        ++i;\n      }\n    }\n    // if it's not a string recurse\n    else {\n      merge_text_nodes( jsonml[ i ] );\n      ++i;\n    }\n  }\n}\n\n} )( (function() {\n  if ( typeof exports === \"undefined\" ) {\n    window.markdown = {};\n    return window.markdown;\n  }\n  else {\n    return exports;\n  }\n} )() );\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/markdown/markdown.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/markdown/images/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/images/new-markdown-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-markdown-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <path d=\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\"transform=\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \"></path>\n    </g>\n</svg>"
        },
        "$:/plugins/tiddlywiki/markdown/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/new-markdown-button",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}",
            "description": "{{$:/language/Buttons/NewMarkdown/Hint}}",
            "list-after": "$:/core/ui/Buttons/new-tiddler",
            "text": "<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/plugins/tiddlywiki/markdown/readme": {
            "title": "$:/plugins/tiddlywiki/markdown/readme",
            "text": "This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. \n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
        },
        "$:/plugins/tiddlywiki/markdown/usage": {
            "title": "$:/plugins/tiddlywiki/markdown/usage",
            "text": "! Markdown Dialects\n\nBy default the markdown parser recognises the original dialect of Markdown [[as described by John Gruber|http://daringfireball.net/projects/markdown/]]. An extended dialect called \"Maruku\" is also included that provides table support and other advanced features. The syntax extensions are modelled on those of [[PHP Markdown Extra|https://michelf.ca/projects/php-markdown/extra/]].\n\nThe configuration tiddler [[$:/config/markdown/dialect]] determines which dialect is used:\n\n|!Dialect |!Description |\n|Gruber |Standard Markdown |\n|Maruku |Extended Maruku Markdown |\n\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
        },
        "$:/plugins/tiddlywiki/markdown/wrapper.js": {
            "title": "$:/plugins/tiddlywiki/markdown/wrapper.js",
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the markdown-js parser for use in TiddlyWiki5\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar markdown = require(\"$:/plugins/tiddlywiki/markdown/markdown.js\");\n\nvar CONFIG_DIALECT_TIDDLER = \"$:/config/markdown/dialect\",\n\tDEFAULT_DIALECT = \"Gruber\";\n\nfunction transformNodes(nodes) {\n\tvar results = [];\n\tfor(var index=0; index<nodes.length; index++) {\n\t\tresults.push(transformNode(nodes[index]));\n\t}\n\treturn results;\n}\n\nfunction transformNode(node) {\n\tif($tw.utils.isArray(node)) {\n\t\tvar p = 0,\n\t\t\twidget = {type: \"element\", tag: node[p++]};\n\t\tif(!$tw.utils.isArray(node[p]) && typeof(node[p]) === \"object\") {\n\t\t\twidget.attributes = {};\n\t\t\t$tw.utils.each(node[p++],function(value,name) {\n\t\t\t\twidget.attributes[name] = {type: \"string\", value: value};\n\t\t\t});\n\t\t}\n\t\twidget.children = transformNodes(node.slice(p++));\n\t\t// Massage images into the image widget\n\t\tif(widget.tag === \"img\") {\n\t\t\twidget.type = \"image\";\n\t\t\tif(widget.attributes.alt) {\n\t\t\t\twidget.attributes.tooltip = widget.attributes.alt;\n\t\t\t\tdelete widget.attributes.alt;\n\t\t\t}\n\t\t\tif(widget.attributes.src) {\n\t\t\t\twidget.attributes.source = widget.attributes.src;\n\t\t\t\tdelete widget.attributes.src;\n\t\t\t}\n\t\t}\n\t\t// Convert internal links to proper wikilinks\n\t\tif (widget.tag === \"a\" && widget.attributes.href.value[0] === \"#\") {\n\t\t\twidget.type = \"link\";\n\t\t\twidget.attributes.to = widget.attributes.href;\n\t\t\tif (widget.attributes.to.type === \"string\") {\n\t\t\t\t//Remove '#' before conversion to wikilink\n\t\t\t\twidget.attributes.to.value = widget.attributes.to.value.substr(1);\n\t\t\t}\n\t\t\t//Children is fine\n\t\t\tdelete widget.tag;\n\t\t\tdelete widget.attributes.href;\n\t\t}\n\t\treturn widget;\n\t} else {\n\t\treturn {type: \"text\", text: node};\n\t}\n}\n\nvar MarkdownParser = function(type,text,options) {\n\tvar dialect = options.wiki.getTiddlerText(CONFIG_DIALECT_TIDDLER,DEFAULT_DIALECT),\n\t\tmarkdownTree = markdown.toHTMLTree(text,dialect),\n\t\tnode = $tw.utils.isArray(markdownTree[1]) ? markdownTree.slice(1) : markdownTree.slice(2);\n\tthis.tree = transformNodes(node);\n};\n\n/*\n\n[ 'html',\n  [ 'p', 'something' ],\n  [ 'h1',\n    'heading and ',\n    [ 'strong', 'other' ] ] ]\n\n*/\n\nexports[\"text/x-markdown\"] = MarkdownParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        }
    }
}
<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-new-tiddler" type="text/x-markdown"/>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>
</$list>
</$button>
{
    "tiddlers": {
        "$:/plugins/tobibeer/appear/widget.js": {
            "title": "$:/plugins/tobibeer/appear/widget.js",
            "text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/widget.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nUse the appear widget for popups, sliders, accordion menus\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/widgets/widget.js\").widget,e=function(t,e){this.initialise(t,e)},i={};e.prototype=new t;e.prototype.render=function(t,e){this.parentDomNode=t;this.nextSibling=e;this.computeAttributes();this.execute();var i,s,r,a,h,n,l=[];if(this.handle){this.getHandlerCache(this.handle,1);this.refreshHandler()}else{s={type:\"button\"};s.attributes=this.setAttributes(s,\"button\");i=s.attributes[\"class\"].value.trim();s.attributes[\"class\"].value=i+\" appear-show\"+(this.handler?\" tc-popup-absolute\":\"\");s.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.show,{parseAsInline:true}).tree;h={type:\"reveal\",children:this.parseTreeNode.children};h.attributes=this.setAttributes(h,\"reveal\");h.isBlock=!(this.mode&&this.mode===\"inline\");if(h.attributes.type&&h.attributes.type.value===\"popup\"){s.attributes.popup=h.attributes.state;l.push(s);if(!this.handler){l.push(h)}else{s.attributes.handler=this.handler}}else{h.attributes.type={type:\"string\",value:\"match\"};h.attributes.text={type:\"string\",value:this.currentTiddler};s.attributes.set=h.attributes.state;s.attributes.setTo={type:\"string\",value:this.currentTiddler};a={type:\"reveal\",isBlock:this.block,children:[s],attributes:{type:{type:\"string\",value:\"nomatch\"},state:h.attributes.state,text:{type:\"string\",value:this.currentTiddler}}};if(!this.once){r=$tw.utils.deepCopy(s);r.attributes[\"class\"].value=i+\" appear-hide \"+(this.attr.button.selectedClass?this.attr.button.selectedClass:\"\");r.attributes.setTo={type:\"string\",value:\"\"};r.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.hide,{parseAsInline:true}).tree}n=$tw.utils.deepCopy(a);n.children=[];if(!this.once){n.children.push(r)}if(!this.handler){n.children.push(h)}n.attributes.type.value=\"match\";l.push(a,n)}this.makeChildWidgets(l);this.renderChildren(this.parentDomNode,e);if(this.handler){this.addToHandlerCache(h)}}};e.prototype.execute=function(){var t=this;this.attr={map:{reveal:{\"class\":1,position:1,retain:1,state:1,style:1,tag:1,type:1},button:{\"button-class\":1,\"button-style\":1,\"button-tag\":1,tooltip:1,selectedClass:1}},rename:{\"button-class\":\"class\",\"button-style\":\"style\",\"button-tag\":\"tag\"},button:{},reveal:{}};$tw.utils.each(this.attributes,function(e,i){var s;$tw.utils.each(t.attr.map,function(r,a){$tw.utils.each(Object.keys(r),function(r){if(r==i){t.attr[a][i]=e;s=false;return false}});return s})});this.currentTiddler=this.getVariable(\"currentTiddler\");this.show=this.getValue(this.attributes.show,\"show\");this.hide=this.getValue(this.attributes.hide,\"hide\");if(!this.hide){this.hide=this.show}this.once=this.attributes.once&&this.attributes.once!==\"false\";this.$state=this.attributes.$state;this.mode=this.getValue(this.attributes.mode,\"mode\");this.handle=this.attributes.handle;this.handler=this.attributes.handler;this.handlerVariables=(this.attributes.variables||\"\")+\" currentTiddler\";this.keep=[\"yes\",\"true\"].indexOf((this.getValue(this.attributes.keep,\"keep\")||\"\").toLocaleLowerCase())>-1;if(!this.attr.reveal.state){this.attr.reveal.state=this.getValue(undefined,\"default-state\")+this.currentTiddler+this.getStateQualifier()+\"/\"+(this.attr.reveal.type?this.attr.reveal.type+\"/\":\"\")+(this.mode?this.mode+\"/\":\"\")+(this.once?\"once/\":\"\")+(this.$state?\"/\"+this.$state:\"\")}};e.prototype.refresh=function(t){var e=this.computeAttributes();if(Object.keys(e).length){this.refreshSelf();return true}if(this.handle){this.refreshHandler()}return this.refreshChildren(t)};e.prototype.getValue=function(t,e){var i,s,r={show:\"»\",\"default-state\":\"$:/temp/appear/\"};if(t===undefined){i=this.wiki.getTiddler(\"$:/plugins/tobibeer/appear/defaults/\"+e);if(i){s=i.getFieldString(\"undefined\");if(!s||s===\"false\"){t=i.getFieldString(\"text\")}}}if(t===undefined){t=r[e]}return t};e.prototype.setAttributes=function(t,e){var i=this,s={};$tw.utils.each(Object.keys(this.attr.map[e]),function(r){var a,h=i.attr.rename[r];if(!h){h=r}a=i.getValue(i.attr[e][r],r);if(h===\"class\"){a=[\"appear\",\"appear-\"+e,e===\"reveal\"&&i.keep?\"tc-popup-keep\":\"\",i.mode?\"appear-\"+i.mode:\"\",i.once?\"appear-once\":\"\",a||\"\"].join(\" \")}if(a!==undefined){if(h===\"tag\"){t.tag=a}else{s[h]={type:\"string\",value:a}}}});return s};e.prototype.getHandlerCache=function(t,e){var s=i[t];if(!s||e){i[t]={handled:{},handle:{}};s=i[t]}return s};e.prototype.refreshHandler=function(){var t=this,e=this.getHandlerCache(this.handle),s=e.handle;if(Object.keys(s).length){$tw.utils.each(s,function(e,i){t.removeChildNode(i);t.children.push(t.makeChildWidget(e));t.children[t.children.length-1].render(t.parentDomNode,t.nextSibling)});i[this.handle].handle={}}};e.prototype.removeChildNode=function(t){var e=this;$tw.utils.each(this.children,function(i,s){if(i.children[0].state===t){i.removeChildDomNodes();e.children.splice(s);return false}})};e.prototype.addToHandlerCache=function(t){var e=this,i=t.attributes.state.value,s=this.getHandlerCache(this.handler),r=s.handled[i],a={type:\"vars\",children:[t],attributes:{}};$tw.utils.each((this.handlerVariables||\"\").split(\" \"),function(t){t=t.trim();if(t){a.attributes[t]={type:\"string\",value:(e.getVariable(t)||\"\").toString()}}});if(a!==r){s.handle[i]=a;this.wiki.setText(\"$:/temp/appear-handler/\"+this.handler,\"text\",undefined,i)}};exports.appear=e})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tobibeer/appear/defaults/show": {
            "title": "$:/plugins/tobibeer/appear/defaults/show",
            "text": "»"
        },
        "$:/plugins/tobibeer/appear/defaults/mode": {
            "title": "$:/plugins/tobibeer/appear/defaults/mode",
            "text": "block"
        },
        "$:/plugins/tobibeer/appear/defaults/keep": {
            "title": "$:/plugins/tobibeer/appear/defaults/keep",
            "text": "yes"
        },
        "$:/plugins/tobibeer/appear/defaults/button-class": {
            "title": "$:/plugins/tobibeer/appear/defaults/button-class",
            "text": "tc-btn-invisible tc-tiddlylink"
        },
        "$:/plugins/tobibeer/appear/defaults/default-state": {
            "title": "$:/plugins/tobibeer/appear/defaults/default-state",
            "text": "$:/temp/appear/"
        },
        "$:/plugins/tobibeer/appear/popup.js": {
            "title": "$:/plugins/tobibeer/appear/popup.js",
            "text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/popup.js\r\ntype: application/javascript\r\nmodule-type: utils\r\n\r\nAn enhanced version of the core Popup to support:\r\n* absolute popups\r\n* preview popups\r\n* popup z-index\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/utils/dom/popup.js\").Popup,e=require(\"$:/core/modules/widgets/reveal.js\").reveal,s=e.prototype.refresh;t.prototype.show=function(t){var e,s=t.domNode,p=$tw.utils.hasClass(s,\"tc-popup-absolute\"),o=this.popupInfo(s),i=function(t){var e=t,s=0,p=0;do{s+=e.offsetLeft||0;p+=e.offsetTop||0;e=e.offsetParent}while(e);return{left:s,top:p}},l={left:s.offsetLeft,top:s.offsetTop};e=o.popupLevel;if(o.isHandle){e++}this.cancel(e);if(this.findPopup(t.title)===-1){this.popups.push({title:t.title,wiki:t.wiki,domNode:s})}l=p?i(s):l;t.wiki.setTextReference(t.title,\"(\"+l.left+\",\"+l.top+\",\"+s.offsetWidth+\",\"+s.offsetHeight+\")\");if(this.popups.length>0){this.rootElement.addEventListener(\"click\",this,true)}};t.prototype.popupInfo=function(t){var e,s=false,p=t;while(p&&e===undefined){if($tw.utils.hasClass(p,\"tc-popup-handle\")||$tw.utils.hasClass(p,\"tc-popup-keep\")){s=true}if($tw.utils.hasClass(p,\"tc-reveal\")&&($tw.utils.hasClass(p,\"tc-popup\")||$tw.utils.hasClass(p,\"tc-popup-handle\"))){e=parseInt(p.style.zIndex)-1e3}p=p.parentNode}var o={popupLevel:e||0,isHandle:s};return o};t.prototype.handleEvent=function(t){if(t.type===\"click\"){var e=this.popupInfo(t.target),s=e.popupLevel-1;if(e.isHandle){if(s<0){s=1}else{s++}}this.cancel(s)}};e.prototype.refresh=function(){var t,e,p=this.isOpen;e=s.apply(this,arguments);t=this.domNodes[0];if(this.isOpen&&(p!==this.isOpen||!t.style.zIndex)&&t&&(this.type===\"popup\"||$tw.utils.hasClass(t,\"tc-block-dropdown\")&&$tw.utils.hasClass(t,\"tc-reveal\"))){t.style.zIndex=1e3+$tw.popup.popups.length}return e}})();",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/plugins/tobibeer/appear/readme": {
            "title": "$:/plugins/tobibeer/appear/readme",
            "text": "This plugin provides the ''$appear'' widget that can render popups and sliders (inline or block) as well as accordion menus.\n\n!! Attributes\r\n; type\r\n: set to `popup` to have the content appear as a popup\r\n; show\r\n: the button label\r\n; hide\r\n: the hide button label\r\n; mode\r\n: either `block` or `inline`, with respect to the inner content\r\n: any other mode is interpreted as block mode, without the default styles applying, e.g. drop-shadows\r\n; once\r\n: allows to click the button once, then hides it (unless the state is deleted)\r\n; $state\r\n: the widget calculates a state for you, use this to append a simple id\r\n; state\r\n: alternatively, specify a fully qualified state\r\n; keep\r\n: make popups sticky when `yes` or `true`\r\n; handle / handler / variables\r\n: allows to take the popup contents out of the flow and render them elsewhere on the page\r\n: required to properly create popups in table cells and other constained elements\r\n: specify variables to take along\n\n<br>\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#appear\r\n"
        },
        "$:/plugins/tobibeer/appear/styles": {
            "title": "$:/plugins/tobibeer/appear/styles",
            "tags": "$:/tags/Stylesheet",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n<pre>.tc-reveal.appear-block,\r\n.tc-popup.appear {\r\n\tborder-radius: 5px;\r\n\tpadding: 1px 1em;\r\n\t<<box-shadow \"2px 2px 4px rgba(0,0,0,0.3)\">>;\r\n}\r\n.tc-popup.appear {\r\n\tpadding: 0 1em;\r\n\tbackground: <<colour background>>;\r\n}\r\n.appear-reveal.appear-inline{\r\nmargin-left:5px;\r\n}\r\n.appear-reveal.appear-inline.appear-once{\r\nmargin-left:0;\r\n}</pre>"
        }
    }
}
{
    "tiddlers": {
        "$:/core/images/timestamp": {
            "created": "20161204161241276",
            "text": "<svg class=\"tgc-timestamp tc-image-button\"height=\"20pt\" width=\"20pt\" viewBox=\"0 0 20 20\"><path d=\"M10,0 C4.5,0 0,4.5 0,10 C0,15.5 4.5,20 10,20 C15.5,20 20,15.5 20,10 C20,4.5 15.5,0 10,0 L10,0 Z M10,18 C5.6,18 2,14.4 2,10 C2,5.6 5.6,2 10,2 C14.4,2 18,5.6 18,10 C18,14.4 14.4,18 10,18 Z M10.5,5 L9,5 L9,11 L14.2,14.2 L15,12.9 L10.5,10.2 L10.5,5 Z\"></svg>",
            "title": "$:/core/images/timestamp",
            "tags": "$:/tags/Image",
            "modifier": "TonGerner",
            "modified": "20170726075430605",
            "creator": "TonGerner"
        },
        "$:/core/ui/EditorToolbar/timestamp": {
            "created": "20161118171456554",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<now>>\n/>",
            "title": "$:/core/ui/EditorToolbar/timestamp",
            "tags": "$:/tags/EditorToolbar",
            "shortcuts": "((timestamp))",
            "modifier": "TonGerner",
            "modified": "20170726074415991",
            "icon": "$:/core/images/timestamp",
            "description": "{{$:/language/Buttons/TimeStamp/Hint}}",
            "creator": "TonGerner",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "caption": "{{$:/language/Buttons/TimeStamp/Caption}}"
        },
        "$:/language/Buttons/TimeStamp/Caption": {
            "text": "insert timestamp",
            "title": "$:/language/Buttons/TimeStamp/Caption",
            "modifier": "TonGerner",
            "modified": "20170409182351950",
            "creator": "TonGerner",
            "created": "20170409182341874"
        },
        "$:/language/Buttons/TimeStamp/Hint": {
            "text": "Insert timestamp",
            "title": "$:/language/Buttons/TimeStamp/Hint",
            "modifier": "TonGerner",
            "modified": "20170409182417864",
            "creator": "TonGerner",
            "created": "20170409182409954"
        },
        "$:/config/ShortcutInfo/timestamp": {
            "created": "20161204162358226",
            "text": "{{$:/language/Buttons/TimeStamp/Hint}}",
            "title": "$:/config/ShortcutInfo/timestamp",
            "modifier": "TonGerner",
            "modified": "20171030143250967",
            "creator": "TonGerner"
        },
        "$:/config/shortcuts/timestamp": {
            "text": "ctrl+D",
            "title": "$:/config/shortcuts/timestamp",
            "modified": "20161204165605507",
            "created": "20161204162542451"
        },
        "$:/plugins/tongerner/timestamp-button/readme": {
            "created": "20170511200701782",
            "text": "A button ({{$:/core/images/timestamp}}) for the Editor toolbar that inserts a timestamp.<br>Adapt the date/time format - `<<now [format]>>` in $:/core/ui/EditorToolbar/timestamp - to your liking.<br>\nAssigned shortcut: {{$:/config/shortcuts/timestamp}}\n\n\n\n",
            "title": "$:/plugins/tongerner/timestamp-button/readme",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20170801191143597",
            "creator": "TonGerner"
        }
    }
}
In me the tiger sniffs the rose .
<span title="HImalaya"><img style="float: none; center auto;align:center;display:block; margin-right: auto" src="https://rizi.me/img/RIZI-black.png" width=15%></span>
hide
hide
hide
hide
hide
hide
hide
show
hide
hide
show
hide
hide
hide
hide
show

hide
hide
show

hide
hide
hide
hide
notnew
notnew
notnew
notnew
{
    "details-state": "",
    " details-state": ""
}

contents
yes
yes
2019年5月日志
Most Recent Journal
$:/core/ui/AdvancedSearch/System
$:/core/ui/ControlPanel/Toolbars
2018年12月日志
$:/core/ui/ControlPanel/Info
2017年12月日志
Book List
TableOfContents
open
hide
hide
hide
hide
Coze



 Untitled


{
    "tiddlers": {
        "$:/info/browser": {
            "title": "$:/info/browser",
            "text": "yes"
        },
        "$:/info/node": {
            "title": "$:/info/node",
            "text": "no"
        },
        "$:/info/url/full": {
            "title": "$:/info/url/full",
            "text": "file:///Users/edz/OneDrive%20-%20Himalaya/Open/%E8%AF%BB%E4%B9%A6%E6%97%A5%E5%BF%97/index.html"
        },
        "$:/info/url/host": {
            "title": "$:/info/url/host",
            "text": ""
        },
        "$:/info/url/hostname": {
            "title": "$:/info/url/hostname",
            "text": ""
        },
        "$:/info/url/protocol": {
            "title": "$:/info/url/protocol",
            "text": "file:"
        },
        "$:/info/url/port": {
            "title": "$:/info/url/port",
            "text": ""
        },
        "$:/info/url/pathname": {
            "title": "$:/info/url/pathname",
            "text": "/Users/edz/OneDrive%20-%20Himalaya/Open/%E8%AF%BB%E4%B9%A6%E6%97%A5%E5%BF%97/index.html"
        },
        "$:/info/url/search": {
            "title": "$:/info/url/search",
            "text": ""
        },
        "$:/info/url/origin": {
            "title": "$:/info/url/origin",
            "text": "file://"
        },
        "$:/info/browser/screen/width": {
            "title": "$:/info/browser/screen/width",
            "text": "1280"
        },
        "$:/info/browser/screen/height": {
            "title": "$:/info/browser/screen/height",
            "text": "800"
        }
    }
}


$:/themes/tiddlywiki/vanilla
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n        background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n  vertical-align: middle;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n    cursor: pointer;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tvertical-align: text-bottom;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n  font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n    word-break: break-word;\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n    \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n    \tlist-style-type: none;\n    \tpadding-left: 0;\n    \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n    \tpadding-left: 1em;    \n}\n\n.tc-tree button { \n    \tcolor: #acacac;\n}\n\n.tc-tree svg {\n     \tfill: #acacac;\n}\n\n.tc-tree span svg {\n    \twidth: 1em;\n    \theight: 1em;\n    \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n    \tcolor: lightgray;\n}\n\nselect {\n        color: <<colour select-tag-foreground>>;\n        background: <<colour select-tag-background>>;\n}\n\n"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n *    user zoom.\n */\n\nhtml {\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n  margin: 0;\n}\n\n/* HTML5 display definitions\n   ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; /* 1 */\n  vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n/* Links\n   ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n  background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n  outline: 0;\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n  font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n  border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n  margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n  overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n *    Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; /* 1 */\n  font: inherit; /* 2 */\n  margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n  overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n *    and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n *    `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n  cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n  line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n *    (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; /* 2 */\n  box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n  border: 0; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n  font-weight: bold;\n}\n\n/* Tables\n   ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n"
        }
    }
}
15px
14px
20px
5px
fluid-fixed
no
diagonal-noise.png
fixed
auto
Monaco, Consolas, "Lucida Console", "DejaVu Sans Mono", monospace
"Microsoft YaHei"
"Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif

.
love
https://rizi.me/store.php
zoomin
"""
06-06-10-端午·读书更新:
 1. 《夜航船》(明)张岱 著(共20卷) @@color:red;^^★^^ @@  
 2. 《浮生六记》  (清)沈复  @@color:red;^^★^^ @@
 3. 《扬州十日记》 (明) 王秀楚 
 4. 《世说新语》  (南朝宋) 刘义庆 
 5. 《春明丛说》  (清) 俞蛟 
 6. 《围炉夜话》  (明) 佚名 
 7. 《寄园寄所寄》 十二卷B(清)赵吉士
 8. 《宋稗类钞》   (清) 潘永因

06-06-17日更新 阵雨
9. 《月亮和六便士》(英)威廉·萨默塞特·毛姆   @@color:red;^^★^^ @@

**06-07-20日更新 连续两天阵雨**
10. 《金刚经》
11. 《周易正义》@@color:red;^^★^^ @@
12. 《景善日记》 (清) 景善
13. 《晚清七十年》 唐德刚
14. 《天史》(清)丁耀亢
15. 《悔过自新说》(清)李

06-8-01日新添  湿热
16. 《埋忧集》(清)朱翊清 撰
17. 《智囊全集》(明)冯梦龙
18. 《老学庵笔记》(宋)陆游
19. 《增广贤文》

06-9-01日新添  凉秋·悲伤的下午
20. 《周易正读》徐丛

06-9-07日新添  心慌无所事事的下午
21. 《佛说无量寿经》
22. 《古文辞类篹》清 姚鼐 编

**06-9-08日新添  开始啃啃大部头
23. 《史记》西汉·司马迁

06-9-12日新添  在经常去的小树林
24. 《清代野记》清] 梁溪坐观老人
25. 《客窗闲话(正续)》清 吴炽昌

06-9-15日新添  中秋节
26. 《述庵秘录》清·王无生
27. 《醉古堂剑扫卷》/《小窗幽记》 @@color:red;^^★^^ @@*(该书与明朝洪应明《菜根谭》、王永彬《围炉夜话》一起并称“处世三大奇书”)*明·陆绍珩 

06-9-16日新读  中秋假期万圣书店
28. 《木心散文》(在万圣书店用了三个小时读完了这本小册子)

06-9-20日  紧张的投资最后阶段
29. 《古文观止》
30. 《大明王朝1566》刘和平 
31. 《百家讲坛:鲍鹏山新说水浒》

06-10-5日  十一郁闷的长假
32. 《从0到1,开启商业与未来的秘密》美国 彼得·蒂尔
33. 《[[零ZERRO:世界符号大全|零Zerro]]》日本 松田行正

06-10-12日  车库咖啡
34. 《干校六记》杨绛
35.《 [[艺术的故事]]》贡布里希

06-10-13日  车库咖啡回家路上
36. 《念完哈佛念阿弥陀佛》陈宇廷 

06-10-14日  很郁闷的周末 
37. 《瓦尔登湖》美·梭罗  @@color:red;^^★^^ @@

06-10-30日  风沙肆虐的周末
38. 《青箱杂记》宋·吴处厚

06-11-15日  窒息的雾霾天
39. 《洛阳缙绅旧闻记》宋·张齐贤
40.  《佛说四十二章经》 明·释智旭

06-12-11日  窒息的雾霾天
41. 《自由选择》(美)米尔顿·弗里德曼
42. 《格调 社会等级与生活品味》(美)保罗.福塞尔

06-12-12日  窒息的雾霾天
43. 《阿城文集》阿城  @@color:red;^^★^^ @@
44. 《献给阿尔吉侬的花束》(美)丹尼尔·凯斯

--
[[2019读书目录]] | [[2018读书目录]] | [[2017读书目录]] | [[读书检索|Book List]] | [[读书日志|Reading Logs]]

"""
//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//


<$button message="tm-close-tiddler">Close Me!</$button>
<<tabs "[[2017年12月日志]] [[2017年11月日志]] [[2017读书目录]]">>  
这本书堪称睡前故事,每晚都会看一些,乐此不疲的原因,就在于此书书写优美,故事怪力乱神,伴眠可以浮想联翩。如若说看次书何得?唯有此书得遣词造句了,至于内容和《子不曰》以及《阅微堂笔记》不相伯仲。
我记得小学时候家里有一本书---《前方来信》---至今不知道这本书从哪里来的,家里没有人会买这本书的。今天看《见字如面》,又让我想起小时候看的前方来信,往事模糊。也许这就是读书的力量,读书未必当时都记得,但是在未来的某一天,总会激活记忆,想起点滴。
"""
李渔是个好玩的人,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。历史上只有张岱堪与媲美。
[[张岱《自为墓志铭》|2017年11月14日 下午 08:52:39]]
"""
3. 可得性法则能解释为什么有些事人们记得很清楚,而有的却被遗忘了。人们是根据从记忆中提取信息的容易程度来估测事情的重要程度的,而这往往也与媒体报道的广泛程度有关。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:10:14

4. 正常人思考时出现的系统性失误,认为这些失误是由认知机制的构造造成的,并非由情感引起的思想腐化导致的。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:07:51

5. 包括对事件的概率赋值、对未来进行预测、对假设进行评估,以及对频率进行预估
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:06:33

6. 对经验法则的依赖必然会导致人们判断时的成见。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:05:35

7. 以某个字母开头的单词要比想起它在第三个字母位置上的单词容易得多。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:05:02
	
8. 框架效应,即决策的制定往往因为对所回答问题不合逻辑的选择而受到影响。
			
24. 我们对自己认为熟知的事物确信不疑,我们显然无法了解自己的无知程度,无法确切了解自己所生活的这个世界的不确定性。我们总是高估自己对世界的了解,却低估了事件中存在的偶然性。

27. 我们显然无法了解自己的无知程度,无法确切了解自己所生活的这个世界的不确定性。
	
28. 直觉启发法的核心观点:当面对难题时,我们往往会对相对简单的问题进行回答,却忽略了自己已经置换了原始问题这个事实。
	
30. 我的主要目标是,在认知心理学和社会心理学最新发展的基础上展示大脑的工作机制,在这些发展中有一些内容比较重要,其中一项就是我们认为瑕瑜互见的直觉思维。

''张岱《自为墓志铭》:''

<<<
蜀人张岱,陶庵其号也。少为纨绔子弟,极爱繁华,好精舍,好美婢,好娈童,好鲜衣,好美食,好骏马,好华灯,好烟火,好梨园,好鼓吹,好古董,好花鸟,兼以茶淫橘虐,书蠹诗魔,劳碌半生,皆成梦幻。年至五十,国破家亡,避迹山居,所存者破床碎几,折鼎病琴,与残书数帙,缺砚一方而已。布衣蔬食,常至断炊。回首二十年前,真如隔世。
<<<


书前部分--关于戏剧创作理论部分--尽可以略去,尤其是关于填词声律,非专业人士实难掌握,与其晦涩难懂,不如略过。
自序足以悲天悯人,天妒英才,让人唏嘘人生无常。

''自序 ''


<<<
  陶庵国破家亡,无所归止,披发入山,駴駴(hài)为野人。故旧见之,如毒药猛兽,愕窒不敢与接。作自挽诗,每欲引决。

  因《石匮书》未成,尚视息人世。然瓶粟屡罄,不能举火,始知首阳二老直头饿死,不食周粟,还是后人妆点语也。饥饿之余,好弄笔墨,因思昔人生长王、谢,颇事豪华,今日罹此果报。以笠报颅,以篑报踵,仇簪履也;以衲报裘,以苎报絺,仇轻暖也;以藿报肉,以粝报粻,仇甘旨也;以荐报床,以石报枕,仇温柔也;以绳报枢,以瓮报牖,仇爽垲也;

  以烟报目,以粪报鼻,仇香艳也;以途报足,以囊报肩,仇舆从也。种种罪案,从种种果报中见之。鸡鸣枕上,夜气方回,因想余生平,繁华靡丽,过眼皆空,五十年来,总成一梦。今当黍熟黄粱,车旅蚁穴,当作如何消受?遥思往事,忆即书之,持向佛前,一一忏悔。不次岁月,异年谱也;不分门类,别志林也。偶拈一则,如游旧径,如见故人,城郭人民,翻用自喜,真所谓痴人前不得说梦矣。昔有西陵脚夫为人担酒,失足破其瓮,念无所偿,痴坐伫想曰:“得是梦便好!”

  一寒士乡试中式,方赴鹿鸣宴,恍然犹意非真,自啮其臂曰:

  “莫是梦否?”一梦耳,惟恐其非梦,又惟恐其是梦,其为痴人则一也。余今大梦将寤,犹事雕虫,又是一番梦呓。因叹慧业文人,名心难化,正如邯郸梦断,漏尽钟鸣,卢生遗表,犹思摹拓二王,以流传后世。则其名根一点,坚固如佛家舍利,劫火猛烈,犹烧之不失也。
<<<

其它零散记录:

1. 仰望慈悲,俯从大众.    2017-06-20 02:03:47

2. 是日,四方流离及徽商西贾、曲中名妓,一切好事之徒,无不咸集。长塘丰草,走马放鹰;高阜平冈,斗鸡蹴踘;茂林清樾,劈阮弹筝。浪子相扑,童稚纸鸢,老僧因果,瞽者说书,立者林林,蹲者蛰蛰。日暮霞生,车马纷沓。宦门淑秀,车幕尽开,婢媵倦归,山花斜插,臻臻簇簇,夺门而入。    2017-07-09 13:14:56

3. 土著流寓、士夫眷属、女乐声伎、曲中名妓戏婆、民间少妇好女、崽子娈童及游冶恶少、清客帮闲、傒僮走空之辈,无不鳞集。 2017-07-09 13:04:43。

//待补//
梅鼎祚《青泥莲花记》载,宋徽宗赵佶为了泡妞竟设“行幸局”,专职安排其寻娼宿妓,这不就是炮局吗?《青泥莲花记--李师师》:

<<<
“局中以帝出日谓之有“有排挡”,次日未还,则传旨称疮痍不能坐朝”
<<<

无怪乎被金人掳去。。
文人相轻,亘古不变。

《品人录》雍正一节,说起雍正驾崩之谜,易中天说二月河的《雍正皇帝》可谓“狗屁不通”“信口开河二月河”:


<<<
雍正暴卒,官书又不载原因,似乎有意在隐瞒什么,自然会引起人们的猜疑。历史学家的猜测不带感情,比较可靠公允,如郑天挺认为死于中风,冯尔康认为死于中毒(服丹药所致)。小说家和民间的说法就难免想当然甚至瞎编造。最离谱的是河南作家二月河,在其所著《雍正皇帝》一书中说是半因殉情半因乱伦而自杀,简直就是胡编乱造信口开河。电视连续剧《雍正王朝》则含糊其辞,暗示其系劳累而死,虽有一定道理,但劳累不可能是致死的直接原因。
<<<


一个史学家,怎么能以史学标准考量小说家那,还加枪弄棒的来个地域歧视,如此来说,金庸武侠小说可谓满纸荒唐言了?易中天白呼了半天也没有对康熙之死说出个所以然来。如若非要找一个史学家里写小说最好的,小说家里历史最夯实的,非高阳莫属了([[见此|http://www.zove.me/index.html#《清朝的皇帝》:《清朝的皇帝》]])。《清朝的皇帝》里,高阳对雍正上位,采取的是“偷梁换柱”说:把康熙遗诏“传位十四阿哥胤祯。钦此。--康熙六十一年六月初二御笔”通过隆科多篡改为“传位于四阿哥胤禛。钦此。”(原著:“将“贞”上一小画出头,最下面再加上一画,使得“贞”之下的两撇,变成一个“大”字,“祯”就变成“真”了。”)权且不论孰是孰非,尚不可定论。但高阳的小说可谓史实与文采兼具,考据公良而翔实,古韵十足而易懂(见《清朝的皇帝》、《乾隆韵事》读书笔记:[[《清朝的皇帝》、《乾隆韵事》|http://www.zove.me/index.html#2017读书目录-下:2017读书目录-下]]),而易中天的作品与之比起来,易也只能算是一个说书人了。

推荐:高阳作品《胡雪岩全传》和《慈禧全传》

<$button message="tm-close-tiddler">Close Me!</$button> 
阿城的字,字字无奇;连成句,句句平常;组成段,则意味绵长。这就是一个写字人的功力。

平字见奇,常字见险,陈字见新,朴字见色。

阿城的短篇,读起来,如塌青草,如沐春风,一段故事下来,人的凄苦悲歌,吹煞一波江水。
怪不得王安忆有这样评价:

<<<
“阿城是一个有清谈风格的人。现在作家里面其实很少有清谈风格的,生活很功用,但是他是有清谈风格的,他就觉得人生最大的享受就是在一起吃吃东西,海阔天空地聊天。法国人也有清谈风格。
<<<


[[短篇精品|http://zove.me/#%E7%B2%BE%E5%93%81%E7%9F%AD%E7%AF%87%E9%98%85%E8%AF%BB:%E7%B2%BE%E5%93%81%E7%9F%AD%E7%AF%87%E9%98%85%E8%AF%BB]]
"""
自顺治以后,年号的涵义如下: 
1. 顺治——入关之初,天下未定,愿将顺民意,以求大治。此一年号显然有抚慰的用意在内。
 2. 康熙——天下既定,与民休息,希望安居乐业。 
3. 雍正——雍为雍亲王,正为正位。特选此两字,正见得其得位不正;世宗喜自作聪明,类此弄巧成拙之事甚多。 
4. 乾隆——乾卦在五伦中象征为男、父、君,用于年号自是指君。乾隆者"乾运兴隆",可见高宗得位的基础是很薄弱的。此年号配合其他各种迹象,透露了许多秘密。 
5. 嘉庆——此年号为高宗内禅时所定,嘉是对嗣皇帝的嘉许、嘉勉,庆者高宗自祝。  
6. 道光——光大道统之意。清朝诸帝年号,道光的涵义比较空泛。 
7. 咸丰——道光年间,积极整顿盐务、漕运、河道,但鸦片战争的结果,显示财用不足,国势中衰;文宗即位,以求富足为第一要义,因称咸丰。 
8.同治——穆宗年号本定"祺祥",辛酉政变,"三凶"被逮,两宫垂帘,恭王执政,同治的涵义非常明显:太后临朝听政,并不专断,愿与亲贵大臣共同治国。 
9.光绪——绪有二义,一为统绪,二为次绪。张衡《东京赋》:"故宗绪中圮。"注曰:"绪,统也。"所以年号用此绪字,既以表示德宗为外藩迎立,亦以表示兄终弟及的先后次序,于德宗的身份异常贴切。同光之际,词臣最盛,故能选用此精当深刻的字眼。光自是光大之意。 
10. 宣统——迎立溥仪的懿旨,明白宣告,溥仪入继为穆宗之子,兼祧德宗。此是根据慈禧的意旨,明白宣告统绪,用意亦在防止醇王一系,或者会引明世宗的故事,以皇帝"本生父"的身份,在宗法上引起争议。
//~高阳《清朝的皇帝》//
"""
一、雍正:上"胤",下"示"字旁。 
二、乾隆:上"弘",下"日"字旁。 
三、嘉庆:上"颙",下"玉"字旁。 
四、道光:上"绵",下"竖心"旁。 
五、咸丰:上"奕",下"言"字旁。 
六、同治:上"载",下"三点水"旁。 
七、光绪:同上。 
八、宣统:上"溥",下"人"字旁。
//《清朝的皇帝》//
此名字好美 --“锁骨菩萨”,当下来形容骨干女孩还是蛮合适的。


<<<
昔延州有妇人,白哳,颇有姿馥,年可二十四、五。孤行城市,年少之子悉与之游,狎妮荐枕,一无所却。数年而殁。州人莫不悲惜,共醵丧具,为之葬焉。以其无家,瘗于道左。
大历中,忽有胡僧自西域来,见墓遂肤坐,具敬礼焚香。围绕赞叹数日。人见谓臼:“此一淫纵女子,人尽夫也。以其无属性,故瘗于此,和尚何敬邪。"僧日:“非檀越所知,斯乃大圣、慈悲喜舍,世俗之欲,无不徇焉。此即锁骨菩萨,顺缘已尽。圣者云耳,不信,即启以验之。”
众大即开墓,视遍身之骨,钩结皆如锁状·果如言。州
人异之.为设大斋.超塔焉。一《续玄堡录》
<<<

此类故佛教典籍载录颇多:

<<<

昔有贤女马郎妇,于金沙滩上施一切淫人。凡与交者,永绝其淫。死葬后,一梵僧来,云:“求我侣”掘开,乃锁子骨。梵僧以杖挑起,升空而去。-- 《传灯录》
<<<

佛门故事中,姿色靓丽大义凛然人尽可夫的女子,很多都超然升天。真可谓我不入地狱谁入地狱。以身试法,言传身教,一念成佛!


<<<
观音大士昔于陕州化为女,以救淫迷:既死,埋之,骨如金锁不断。  一《韵府续》
<<<


<$button message="tm-close-tiddler">Close Me!</$button> 
什么小说才是一本好小说?
具有一个引人入胜的故事是否就是一本好小说?
这是毛姆提出来的问题,也是我有时候很困惑的问题,什么才是一部好小说?一部好小说应该具有什么样的特征?
如果说叙述了一个耐人寻味的故事就是一本好小说,不如说它是一本故事会。这让金庸的作品情何以堪?如果按照毛姆所说“他们并不明白,实际上故事是小说家为了抓住读者的兴趣而扔出的一根救生绳索。”,一本好小说,首先得有一个引起读者广泛的兴趣得主题,“故事并不是小说中最重要的部分。”同时也指出为什么许多作家时不时在小说中安排男女上床的情节,就是引起人们的兴趣。

<<<
“为了维持小说对读者的吸引力,他们让男女主人公在故事中频频上床。在我看来,这不是一个好办法。 关于性交,切斯特菲尔德爵士曾经有过这样的评论:欢娱是短暂的;情景是好笑的;代价是高昂的。如果切斯特菲尔德爵士寿命够长,活到今天并阅读过现代小说,也许他会做出这样评价:行为是重复的;叙述是冗长的;感受是乏味的。
<<<

小说家不是故事员,但小说要有故事。故事之外的是什么?
"""
雍正是一个什么样的人:
1、孤独而敏感:做皇子时,他是“孤臣”;当了皇帝,则是“独夫”。他生性刚毅、急躁、猜忌、刻薄、冷峻挑剔,易暴易怒,因此在诸王大臣中很没有人缘,几乎和谁都搞不来。苛刻一面,处理年羹尧一事即可看出来。 雍正对年羹尧,可以说是恨到骨头里,也整到底了。他给年羹尧的最后上谕说:“尔自尽后,稍有含怨之意,则佛书所谓永堕地狱者,虽万劫亦不能消汝罪孽也。”专制君主残害他人,真比强盗还要厉害。强盗不过要人钱财,最多谋人性命,专制君主则不但要别人的性命,还要别人的灵魂,而且还要说这是为你好,是慈悲为怀菩萨心肠,真是阿弥陀佛,善哉善哉!

2、朝乾夕惕,宵衣旰食:敬业精神和勤政精神,几乎所有历史学家都不否认。 雍正的个人生活也很简单,没什么嗜好和娱乐,不爱游猎,也不算好色。他也喜欢一些小玩艺,但不玩物丧志。
3、刚毅而又有温存一面:他常常会在臣下请安的折子上批上一句:“朕躬甚安好,卿好么?”或“朕安,你好么?”话虽不多,但语气中透着亲切,不是一般的官样文章。他也会和臣下说闲话,拉家常,絮絮叨叨,拉拉杂杂。兴起时,想说什么就说什么。比如:“好事好事!读此奏书之后而不高兴嘉奖的,除非不是皇帝。”或“李枝英真不是个人!大笑话!真笑话!”“传口谕给他,朕笑得了不得,真武夫也!”他还会在奏折上连批四个该字:“该!该!该!该!”真是爱憎好恶溢于言表,嬉笑怒骂皆成文章,完全不摆皇帝架子,故作圣人状。难怪史家公认,读雍正御批,尤有趣味,可以读出一个真实的雍正来。

雍正对自己一生所作所为,从不后悔,而且充满骄傲。正如他向世人之所宣布:@@background-color:yellow;“朕就是这样汉子,就是这样秉性,就是这样皇帝!”@@ 既然如此,我们还有什么话好说?

组织制度改革:公、忠、廉、能。
包括康熙皇帝在内,历代帝王都奉司马昭的“三字经”为圭臬。这三个字,就是清、慎、勤,也就是清廉、谨慎、勤勉。庸才则更加注重才能,并因材施用,扬起长而避其短,例如用文化程度不高但侠肝义胆的李卫做施外武将,而对维诺但

制度改革:密折政治。这是一道狠招,比明代的东西厂特务制更文明更有效,高明了不少。

思想文化改革:崇儒礼佛 

2017年11月22日下午11:43:32

<$button message="tm-close-tiddler">Close Me!</$button> 
"""
雍正胤禛是从藩邸突然跃升为皇帝,自然对官场种种陋习弊端、亏空挪用、贪污之道都谙熟。所以执政不久就开始了一场声势浩大的反贪风暴。力度之大堪为清代之最。
雍正先从国库和地方亏空抓起,手段高明且狠辣:从中央派出检查小组,并且带领着各地候补官员,先查亏空,再查贪污,一经查实立马革职,候补官员马上替补上任。被查出的亏空和贪污一切都有当事人偿还,而且父债子还,直到还清为止。这一场肃清贪腐运动浩浩荡荡在全国铺展开来,就连皇帝的弟弟也没有放过,照样卖宅子填补在任时的亏空。
反腐运动就像暴风雨,水过地皮湿,并不能根本上解决问题。倡廉比反腐更为重要,接下来,雍正从制度上进行改革,企图从根本上解决贪腐问题。雍正推出了两大措施:耗羡归公和高薪养廉。 就是费改税和高薪养廉。
雍正的反贪运动结果怎么样?确实有效,历史上有“雍正一朝无官不清”的说法,虽然夸张了点,却是对雍正治国的一个相对公正的评价。
“雍正改元,政治一新”。可这一切都是短暂的,讽刺的是,雍正去世没多久,在乾隆一朝就出现了有清一代最大的贪官大学士和珅,而且贪污之巨让人瞋目结舌。和珅查抄时的家财达八万万两,相当于当时政府十年的财政收入,时法王路易十四私产的十四倍,也相当于雍正五年国库储银的十六倍,康熙末年国库储银的一百倍。如果雍正地下有知,估计清陵要冒烟了。
为什么雍正一朝的朗朗清明如此短暂那?
成也极权,败也极权。“其人存则其政举,其人亡则其政息”(《礼记·中庸》)
雍正的反贪改革之所以成效,靠的是皇帝的强权和特权,而非行之有效的制度,因为雍正是这个制度的制定者也是监督方。雍正发明的“密折制”-- 地方直通中央热线,有授权的地方官吏都可以向雍正私呈密折,内容不限(这比明朝设置的东西厂特务制度高明了许多)-- 也起到了极大的监督作用。" 雍正要惩治的是腐败,反腐败的力量是他的特权,而特权又恰是腐败之源。没有特权,不会滋生腐败;没有特权,又无法惩治腐败。"

这是一个死结!谁能结?
呵呵!
德治 礼治 人治 法治 官治

[[上一则|2017年11月23日 下午 11:46:09]]简单总结了一下雍正的一些改革措施,例如反贪改革、文化以及制度改革。其结果是失败的,那么为什么会失败?除了上一则提到的“其人存则其政举,其人亡则其政息”,根本原因是什么?

人类社会是由单体个人组成群体性社会结构,这里面就有二维空间:个人和群体,如果加上政府即官方,则是三维:个人、群体和政府,三层关系。古代帝王中国对社会的基本治理则有三个方面组成:德治、礼治和律治。

''“他们是乡下人(hillbilliy)、乡巴佬(redneck),或者是白色垃圾(white trash)。而于我来说,他们是邻居、朋友和家人。”''

这是《乡下人的悲歌》作者——31岁的耶鲁法学院学生 J.D. 万斯——在序言中的自述。

在美国这个种族意识很强的社会中,所用的词汇往往局限于人们皮肤的颜色——黑人(black people)、亚洲人(Asians)和白种人特权(white privilege)。万斯是个白人,细分的来说,是来自苏格兰-爱尔兰人后裔(Scots-Irish descent)中那些没有大学文凭的数百万白人工人阶级当中的一员,而非美国东北部信奉新教的盎格鲁-撒克逊裔白人(WASP)。“对于这个人群而言,贫穷是家庭的传统——他们的祖先当年在南方当奴工,然后又曾当过佃农、煤矿工人,在较近的年代里又当上了机械工和工厂工人。在美国人的称呼中,他们是乡下人(hillbilliy)、乡巴佬(redneck),或者是白色垃圾(white trash)。而于我来说,他们是邻居、朋友和家人。”

中国自古几乎表面上不存在什么种族意识,五十六个民族是一家,这是社会主流的价值观。但万斯所描述的自我出身——苏格兰-爱尔兰后裔族群,不正像我们当今社会的一些族群——被官方认为的低端人口——吗?他们因为某些共同的属性被标签化为一个低端人口“无产阶级”,他们大部分来自农村或小城市,或许没有大学文凭(或没有名牌大学文凭),他们是快递员、饭店服务人员、办公楼保洁人员,他们是早晨贩卖早点的小贩,夜市撸串的摊主,是发廊的学徒,或者是小区的保安人员。解放前他们是农村包围城市的牺牲者;建国后他们是以工人阶级领导一切的下的贡献者;改革开放后他们是一部分先富起来人眼中的贫穷落后者;现在他们是城市化进程中的低端人口——城市蝼蚁。


在美国,苏格兰-爱尔兰裔是美国特色最为鲜明的群体之一。一位观察者曾记录道:“走遍美国各地,苏格兰-爱尔兰裔美国人一直令我感到震惊。他们是美国最为持久稳固、变化最少的亚文化群。当几乎到处都是对传统的全盘摒弃时,他们的家庭结构、宗教与政治,还有社会生活仍然保持不变。”在中国又何尝不是那,也许是这些“低端人口”仍在坚守着中国几千年乡村社会结构沿袭下来的一些传统文化,最浓的传统也只仅存在这些人生活之中了,也许一些人认为落后,认为俗,认为不现代,可中华文化能和这些割裂吗?我想被文革扫荡的也只剩下这些了。

而这些农村低端人口对传统文化的信奉给国家和社会带来了许多好的特性——高度的忠诚感以及对家庭和国家的狂热。如果社会是一面硬币,所谓的高端人口是带字的一面,无字的一定是“低端人口”,因为这一面被称为反面,他们是梅花、菊花和兰花。我们的社会向来是要面子不要里子的,看来这次北京“放弃低端人口”运动,一定不会是个案。

出身“寒门”的美国小伙子万斯在《乡下人的悲歌》自序里面说:
这就是我真实的人生,也是我写这本书的初衷。我想让人们知道那种对自己濒临放弃是一种什么样的感觉,以及为什么会有人放弃。我想让人们了解穷人的生活到底发生了什么,以及精神和物质上的贫穷会对穷人家的孩子造成什么样的心理影响。我想让人们理解我和我家庭的美国梦。我想让人们体会向上层流动的真实感受。此外,我还想让人们认识到我自己不久前才意识到的一个问题:对于我们这些实现了美国梦的幸运儿来说,那些我们经历过的恶魔一直就在身后不远处穷追不舍。

在美国的万斯是幸运的,实现了自己的美国梦。
在中国,“寒门”能否在复兴中华进程中实现中国梦?打破传说中的“寒门再难出贵子”?
我不知道,您知道吗?


<a href={{!!url}} target="_blank">北京驱逐低端人口有感</a> 
  ^^微信公众号^^

这封信是夏完淳写给母亲的。夏完淳是谁?


<<<
夏完淳,明末松江华亭县人。1631年出生于江南望族,9岁能赋诗作文,有神童之誉,名重一时。他的父亲是江南名士夏允彝。1644年,明朝灭亡。夏允彝集结忠明人士举兵抗清。这一年夏完淳14岁。刚刚完婚,便追随父亲四处征战。战事失利,夏完淳亲眼见证父亲投江殉节。国仇家恨没齿难忘。夏完淳继续抗清,于1647年春天因叛徒出卖,兵败被俘。押至南京,洪承畴亲自讯问并劝降,夏完淳痛骂了洪承畴。九月十九日,夏完淳在将赴刑场时写下这封《狱中上母书》,随后被带到南京西市。临刑时,他立而不跪,神色不变,刽子手战战兢兢,不敢正视,良久以持刀从喉间断之而绝。夏完淳就义时,年仅16岁。
<<<

权且放下夏完淳的民族大义之大,单纯从一个生物个体而言,16岁的年龄,在现代来看真是“毛都没长全的青瓜蛋”。而明末清初时期16岁的夏完淳却宛然一个大义凛然的伟丈夫,承父遗志反清复明,面对死亡视死如归,也只有面对母亲的时候才会肝肠寸断。看完直让人唏嘘不已。

''狱中上母书''


<<<
不孝完淳今日死矣。以身殉父,不得以身报母矣。痛自严君见背,两易春秋,冤酷日深,艰辛历尽。本图复见天日,以报大仇,恤死荣生,告成黄土。奈天不佑我,钟虐先朝,一旅才兴,便成齑粉。去年之举,淳已自分必死。谁知不死,死于今日也。斤斤延此二年之命,菽水之养无一日焉。致慈君托迹于空门,生母寄生于别姓,一门漂泊,生不得相依,死不得相问。淳今日又溘然先从九京,不孝之罪,上通于天。

呜呼!双慈在堂,下有妹女,门祚衰薄,终鲜兄弟。淳一死不足惜,哀哀八口,何以为生?虽然,已矣!淳之身,父之所遗。淳之身,君之所用。为父为君,死亦何负于双慈?但慈君推干就湿,教礼习诗,十五年如一日;嫡母慈惠,千古所难。大恩未酬,令人痛绝。

慈君托之义融女兄,生母托之昭南女弟。淳死之后,新妇遗腹得雄,便以为家门之幸;如其不然,万勿置后。会稽大望,至今而零极矣。节义文章,如我父子者几人哉?立一不肖后,如西铭先生为人所诟笑,何如不立之为愈耶?呜呼!大造茫茫,总归无后,有一日中兴再造,则庙食千秋,岂止麦饭豚蹄,不为馁鬼而已哉?若有妄言立后者,淳且与先文忠在冥冥诛殛顽嚚,决不肯舍!

兵戈天地,淳死后,乱且未有定期。双慈善保玉体,无以淳为念。二十年后,淳且与先文忠为北塞之举矣。勿悲勿悲!相托之言,慎勿相负。武功甥将来大器,家事尽以委之。寒食盂兰,一杯清酒,一盏寒灯,不至作若敖之鬼,则吾愿毕矣。
新妇结褵二年,贤孝素着。武功甥好为我善待之,亦武功渭阳情也。

语无伦次,将死言善,痛哉痛哉!人生孰无死,贵得死所耳。父得为忠臣,子得为孝子,含笑归太虚,了我分内事。大道本无生,视身若敝屣。但为气所激,缘悟天人理。恶梦十七年,报仇在来世。神游天地间,可以无愧矣!
<<<

这是一封毛泽东写给部下的一封信,毛的书我看的不多,但是从毛的这封信可以看出毛,或许是领导们,喜欢用字“的”和大量的排比句式。细思也是,“的”字为了陈述性强调,排比句式是为了显得更加有力量,时下来到的讲话稿似乎也是如此。

雷经天同志:
你的及黄克功的信均收阅。黄克功过去斗争历史是光荣@@color:red;的@@,今天处以极刑,我及党中央的同志都是
为之惋惜@@color:red;的@@。但他犯了不容赦免的大罪。以
一个共产党员、红军干部而有如此卑鄙@@color:red;的@@、
残忍@@color:red;的@@、失掉党的立场@@color:red;的
@@、失掉革命立场@@color:red;的@@、失掉人的立场的行为,如为赦免,便无以教育党,无以教育红军,无以教育革命者,并无以教育做一个普通的人。
因此中央与军委便不得不根据他的罪恶行为,根据党与红军的纪律,处他以极刑。@@color:red;正因为黄克功不同于一个普通人,正因为他是一个多年的共产党员,是一个多年的红军,所以不能不这样办。@@共产党与红军,对于自己的党员与红军成员不能不执行比较一般平民更加严格的纪律。当此国家危急、革命紧张之时,黄克功卑鄙无耻、残忍自私至如此程度,他之处死,是他的自己行为决定的。 @@color:red;一切共产党员,一切红军指战员,一切革命分子,都要以黄克功为前车之戒。@@
请你在公审会上,当着黄克功及到会群众,除宣布法庭判决外,并宣布我这封信。对刘茜同志之家属,应给以安慰与抚恤。
毛泽东  一九三七年十月十日
上接 :<$details class="notification" summary="德治 礼治 人治 法治 官治">
{{2017年11月27日 上午 12:02:11}}
</$details>


先说德治和礼治,二者是形而上下关系。诚如黄仁宇先生所言,是“以道德代法制”。也就是说,用道德和礼仪来管理社会,治理国家。这样一种管理和治理方式,就叫“德治”和“礼治”,不是我们现在主张的“法治”,也不是通常以为的“人治”。以道德代法制,是中国文化的性质决定的。中国文化的思想内核是群体意识。 因为法制只能规定人们不准做什么,不能规定人们必须做什么。比如它只能规定不得伤害他人,却不能规定必须热爱他人;只能规定不得损害群体利益,却不能规定必须为群体谋求利益。所以德治和礼治在中国古代社会治理中起到了极大的作用,在大部分地方中央政府的权力机构很难遍及,只有吏,没有官。地方的基本治理就要靠德治和礼治了,因为中国儒教的那一套道德理论是一套标准的人与人之间关系的的规范和行为的准则。人与人之间的关系可以有两种:平等的和不平等的。平等的关系产生平等的道德,不平等的关系则有赖于不平等的“伦理”。中国古代社会所谓“伦理道德”的核心内容,就是确立人与人之间的不平等关系,即:别内外、定亲疏、序长幼、明贵贱。因此,不同的人有不同的道德规范,“君为臣纲,父为子纲,夫为妻纲”,君要臣遵守的(忠),君不必遵守;父要子做到的(孝),父不必履行。没有一种对每个人都同等有效或必须共同遵守的“公德”。“天有十日,人有十等”,“惟上智与下愚不移”,哪有起点的平等可言?所以在道德的框架下,群体有宗族祠堂,个体有一家之主,他们挥舞着道德治理的大棒,行使着基本的治理功能。

而儒家说鼓吹的:“人皆可以为尧舜。”每一个人都可以像尧舜一样做一个德行修远的王。可是君臣主仆所修德目各不相同,君主修“王道”,越修越霸气,臣仆修“奴性”,越修越窝囊,怎么会一样地都是“尧舜”?这一切都是政治宣传所需要,蛊惑人心的一种糖衣炮弹而已,是古代的“中国梦”。

其次是人治。中国历史上确实存在过人治的现象。但我们必须注意,那多半出现在特殊的历史时期。比方说,在动乱年代,或建国之初。这时,礼已坏而乐已崩,德治和礼治系统失灵,便只好寄希望于“人治”和“治人”。尤其是在天下大乱改朝换代的年代,某些英雄人物确乎可能凭借个人的魅力,叱咤风云,逐鹿中原,运天下于股掌之中。其实,与其说这是人治,不如说是官治,人无管,治的权力何来?

再说法制。从现代社会治理结构来说,法制是一个社会运转不悖的基础。而中国古代社会,正如前面所说,是以德治和礼治为基础的,法制充其量是社会治理手段的一种补充,因为中国社会产生不了法制。法制有一个基本原则:法律面前人人平等。平等,才需要法;平等,也才能够产生法。什么是法?法就是“全民公约”,就是社会中全体个人的共同约法。

而这恰巧是中国社会的致命硬伤:只强调群体的意义,不承认个体的价值。群体总是伟大的,叫“一大群”。个体总是渺小的,叫“一小撮”。否定个体的存在价值,也就必然不承认个体的独立人格。没有独立人格,就没有自由意志,也就没有民主和法制。这样,赖以维系群体的,便只能是人身依附关系。那么,这样一种人际关系要怎样才能维持呢?无非两个办法,一是暴力,二是哄骗。这两种手段中国都有,那就是“霸道”和“王道”,也就是高压和怀柔。不过,高压和暴力难以持久,还是尽量以怀柔和哄骗为好。三纲五常这些“伦理道德”,就是用来干这活的。

所以这种人格不平等的社会无须乎法,因为他们之间没有什么可商量的,只有服从,无法约定。皇帝口衔天宪,乾纲独断,令行禁止,说一不二,约什么法?所以,中国古代只有“王法”,没有“约法”。虽然也有“约法三章”的说法,但那“约法”从来就是单方面的。比如刘邦入咸阳,与秦中父老的“约法”(杀人者死,伤人及盗抵罪),便不过是刘邦单方面宣布的新王法。中国古代社会是“君要臣死,臣不得不死;父要子亡,子不得不亡。”既然如此,还要法干什么?有律就行。比方说,谋逆,凌迟;大不敬,斩立决;不孝,绞;以及“十恶不赦”(即谋反等十种最严重的罪行不得赦免)等等。

而那些所谓“王子犯法,与庶民同罪”,也是骗人的鬼话。“天有十日,人有十等”,“惟上智与下愚不移”,哪有起点的平等可言?王子能犯什么法?除非是谋反。其他的,便只能叫“过失”。即便有了过失,也要另找替罪羊,由他人代为受过。比如皇太子读书不用功,受罚的便只能是陪读者。春秋时,晋悼公的弟弟公子扬干犯军规,执法官魏绛也不过只是将其车夫斩首。魏绛的“执法如山”是有名的,也不过如此而已。这就是礼,就是“刑不上大夫,礼不下庶人”,没什么平等可言。况且,如果王子犯法,便要与庶民同罪,那么皇帝犯法又与谁同罪?法律面前人人平等,行不通吧?

即便在新社会里,“一切人的自由发展”是以“每个人的自由发展”为条件和前提的。(见《共产党宣言》第一卷第273页)
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201711]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
Weekly30:7.17~7.23

本周读书:[[蒋介石与现代中国的奋斗]]

''“那个丢掉中国的人”''

我不是蒋介石的拥趸。这可能受两方面影响,一是受红色意识流污染;二是因为上一条原因,对近现代政治历史厌恶性排斥。而之于蒋,可能是敌人的敌人即朋友的心理,对之充满兴趣,所以时不时的总会读一些关于蒋介石的稗官野史。 《蒋介石与现代中国的奋斗》非野史,本书作者乃哈佛学者、前美国驻华外交官陶涵(Jay Taylor),他通过研究近年公开的蒋介石日记以及一些罕见档案,以第三方视角还原了那个风雷激荡的年代一个有血有肉凡人蒋介石。“ 透过蒋介石日记的慎选引用,陶涵成功表露蒋介石的个人特质…….日记引文搭配上重大政治、军事局势的生动细述,他让我们更贴近这些还在成形的思考。因此某种程度上,陶涵在蒋介石与他置身的世界之间建构了更具个人感性的连结。 ”(史景迁评)。我想他的著作公允程度应该比红色区出版物要高。本次介绍的版本非大陆版本。中信出版社将此书引进后,从名字就开始阉割–《蒋介石与现代中国》,内文也不知道删减了多少。像之前我在Zeroblog上摘录的章节,一定不会出现在大陆版本上的。如关于抗日战争的记述:

<<<

一九四零年一月,周恩来给斯大林的秘密报告提到,中国有百万以上的士兵伤亡或受伤,其中八路军伤亡仅有三万人,新四军则为一千人,换句话说,抗战打了两年多,中共在整个伤亡人数中只占百分之三。
德国入侵苏联当天,共产国际发紧急指令给中国,告诉他们,其最迫切任务是坚持和国民党合作抗日,如果日本攻打苏联,要以军事行动摧毁日本人在华交通运输线,否则,针对中国境内的日本侵略者的武力行为,不宜由中共发动。这也暗示要尽一切可能去怂恿美国对付德日。
根据共产国际一九四四年十二月的一份报告,直到当时抗战已进行七年半,中共八路军仅有十万三千一百八十六人阵亡,以游击战为主的中共新四军极可能只折损数千人;但是政府军死者逾一百万人。换句话说,从周恩来一九四〇年一月给共产国际的报告,至一九四四年十二月此一报告之间——这段期间是史迪威等人坚称中共承担抗战主要负担而国军并无作为的时间——中共只有约七万名士兵牺牲性命。
中共在“极罕发布的伤亡数字”中透露,从一九四七年三月至五月,“损失”十一万六千人,其中大多在东北地区。
<<<


关于孙中山的描述:


<<<
孙中山“二次革命”失败后狼狈地逃赴日本,追随孙中山东渡的人士当中有一位生意人宋耀如,是孙中山的重要金主,其长女宋蔼龄担任孙的英文秘书,有一天孙中山向宋耀如透露心意,想向宋蔼龄求婚,宋耀如大吃一惊,当下就拒绝了这本亲事,几个月后,宋蔼龄嫁给了孔祥熙。接替宋蔼龄秘书工作,服务革命领袖的,是二十一岁的妹妹宋庆龄,她比姐姐更苗条、美丽,孙中山立刻又爱上了妹妹,而宋庆龄对于这位比她大二十六岁的长官的感情纯粹是政治、精神上的崇拜敬爱。此时,宋耀如可能感觉孙中山又喜欢上了他的二女儿,决定全家回上海。回国之后,宋庆龄悄悄寄了一封信给孙,孙回信说,他在东京迫切需要她的协助。一天夜里,在家里女佣人的帮助下,宋庆龄爬窗、沿扶梯逃出家,旋即搭船去日本,孙中山在东京迎接她,并向她求婚,这一年,宋才二十出头,孙已经四十八岁。因为这件婚事,宋耀如宣布与女儿断绝关系,发誓再也不跟孙中山往来。
<<<
                                           // 17.8.24//


这本书读着好累。

之所以累,是信息量太大,史料太详实,未知领域太多。但也实在精彩,作者对叙事的驾驭,堪为一流。虽然整本书是线性推进,但民国时期的中国四分五裂,军阀混战,倭人入侵,内外交困,国共分合两治,这些庞杂的结构,没有一个好的叙事能力,实难完整的把故事讲下拉。

书方看到三分之一强,抗战刚刚进入转折阶段,珍珠港事件刚刚爆发,但是一个清晰的蒋介石已经浮现出来。如果说之前的蒋介石之于我是一个黑白电影,现在就是一个彩色大片,也许整本书看完会是一个立体的蒋介石呈现。
//2017.9.18//

作为特殊时代一位拨乱反正的伟人,能持之以恒,那怕是在战火硝烟的岁月,每日能静下来写日记,观自内心,自省自艾,实在让人佩服。蒋之前也有一位大人物--曾国藩--每日以字记事,累积书牍,反省自躬,不过比之蒋,后者居位更高,勤奋度更甚,蒋的这一行为,可谓前无古人后无来者。蒋介石的日记更是一份“史记”,一方努力抹平的一些历史,在蒋介石的日记里都真实的记载着。

蒋在日记里经常出现这样的自省言语:

<<<
轻浮急躁,个性太强
凡大小政策,无不自信自决
以致无人进言,不能集思广益
折中至当
<<<

<$button message="tm-close-tiddler">Close Me!</$button> 
''Weekly41:''10.2~10.8

''本周读书:''

# 《[[清朝的皇帝]]》
#  《慈溪全传》
#  《乾隆韵事》

"""
十一长假,人家行万里路,我孤灯闲坐乱翻书。
以上三本书皆出自高阳之手,包括上个月读的《胡雪岩传》,皆堪称经典。高阳以小说形式演绎史话,可以说在近代无人能出之右,尤其清代历史。以小说场景设置还原历史,虽说为史学家所不齿,但史学家却鲜有能把历史活灵活现的现场还原,并于优雅的文字加以描述。高阳为之,不仅文笔优雅,而且古韵悠远,堪称大家。高阳在写作第一部历史小说《李娃》的时候就曾经说过,他的兴趣本来在于历史,对历史考据等等充满了热情,而最终使他忘情于历史的,在于他无边的悲悯和想像力,他对小说细节的热爱。
高阳的清代史话小说,与其出身也不无关系。高阳原名许晏骈,出身钱塘望族。清代杭州横河桥许氏门第显赫,高阳的高祖许乃钊咸丰年间官至江苏巡抚,许乃钊兄许乃普是嘉庆庚辰榜眼,官吏部尚书。光绪初年的军机大臣许庚身,再早些入值南书房的许寿彭,都是高阳的曾叔祖。
//Sat Oct 14 2017 14:56:17 //

《[[清朝的皇帝]]》事实上只讲了三朝皇帝,既清太祖努尔哈赤后金开国称汗、清太宗皇太极称帝、清世祖福临入关。但这三个节点,恰是清一代最错综复杂,最难讲述的,也是历史上存疑最多的。高阳在叙说这三朝采用释疑写法,而非线性叙述,把一些重要事件和疑点进行解疑,而解疑更是让人啧啧,在古籍中旁征博引,引用大量的古代笔记中相关叙述和佐证,堪称学术著作风格。例如在证明董小宛既端敬皇后时,运营了大量笔墨,在许许多多的清人笔记、野史、杂著、诗文中寻找蛛丝马迹,驳斥先前一些史说。这也是高阳最难能可贵的一点,不但有史才与史学,而且有史识,对近代的重要历史人物与事件,都有自己独到的眼光和判断,成一家之言。不过,这也是这本书的晦涩难懂之处,非具有清雅之耐性,非具有古代小学之通识,莫能顺畅读下去。

相比《清朝的皇帝》,另外两本书--《乾隆韵事》和《慈禧全传》--可读性就强的多了,线性叙述,故事性强。只可惜《乾隆韵事》一本书百分之六十都在说乾隆他爹--雍正,剩余部分说的时乾隆出身及其与亲生母亲团聚,而乾隆之事所说无多。//Sat Oct 17 2017 14:56:17 //
"""

<<<
洪承畴的投降与明朝之失天下无甚关系,但对清朝之得天下,关系甚重。《清史稿》本传: 崇德七年二月壬戌,上命杀民仰、变蛟、廷臣,而送承畴盛京。上欲收承畴为用,命范文程谕降。承畴方科跣谩骂,文程徐与语,泛及今古事。梁间尘偶落,着承畴衣,承畴拂去之,文程遽归告上曰:"承畴必不死,惜其衣,况其身乎?"上自临视,解所御貂裘衣之曰:"先生得无寒乎?"承畴瞠视久,叹曰:"真命世之主也!"乃叩头请降。上大悦,即日赏赉无算,置酒陈百戏。诸将或不悦曰:"上何待承畴之重也!"上进诸将曰:"吾曹栉风沐雨数十年,将欲何为?"诸将曰:"欲得中原耳!"上笑曰:"譬诸行道,吾等皆瞽,今获一导者,吾安得不乐?"居月余,都察院参政张存仁上言:"承畴欢然幸生,宜令薙发,备任使。"五月,上御崇政殿,召承畴及诸降将、祖大寿等入见。
<<<


<<<
袁崇焕死得很惨,《石匮书》本传:

于镇抚司绑发西市,寸寸脔割之。割肉一块,京师百姓从刽子手争取生啖之。刽子手乱扑,百姓以钱争买其肉,顷刻立尽。开膛出其肠胃,百姓群起抢之,得其一节者,和烧酒生啮,血流齿颊间,犹唾地骂不已。拾得其骨者,以刀斧碎磔之。骨肉俱尽,止剩一首,传视九边。

此段记载,似有言过其实处,但必有其事,则毫无可疑。其家属在辽者,流贵州;在籍者,流福建。史书皆谓其"胤绝"。乾隆四十八年,高宗手诏查问袁崇焕后裔下落,广东巡抚尚安查奏:"袁崇焕无嗣,系伊嫡堂弟文之子入继为嗣,见有五世孙袁炳,并未出仕。"后蒙恩得授峡江县丞。
<<<
Wed Oct 18 2017 23:52:05 

<$button message="tm-close-tiddler">Close Me!</$button> 
李渔是个好玩的人,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。历史上只有张岱堪与媲美。



<<<
{{2017年11月14日 下午 08:52:39}}
<<<



李渔生在明亡在清,出身富家,天资聪颖,而屡试不第。这样的履历和张岱如出一辙,只不过比张岱大了十三岁。(私以为,盛世是出不了大家和名作的,只有动荡或变革的时代才会“魁星”现世,这是不是应了那句话“饱思安逸,馁思过”。)李渔初为家无恒产,不事农商的“清客”,擅戏剧创作。在当下看,李渔是个不折不扣的文艺青年。满清入关后,江浙地带惨遭战火涂炭,李渔没有像张岱那样遁世深山佛寺,为了养家糊口,李渔自组戏剧小班,自编自导,携带姬妾家眷遍历全国卖文卖艺,创作了诸如《连城璧》《肉蒲团》《十二楼》及传奇《风筝误》《怜香伴》等在当时脍炙人口的作品。“李家班“成为清初著名的戏班之一。

经过十多年江湖漂泊,李渔老矣,李渔诸姬妾既当家花旦亦老矣,已不堪舟车劳顿,风餐露宿。花甲之年的李渔回到金陵,遂把一生的戏剧创作理论和生活经验编撰成书。于是就有了其最负盛名的代表作--《闲情偶寄》。

《闲情偶寄》不仅是中国最早期的戏剧理论之书,也是一本生活美学生活美学典范,讲戏剧创作,讲女人服饰之搭配,讲美食烹饪,讲植物栽培造型。林语堂说:“《闲情偶寄》是一部讨论生活艺术的书。李渔极富创作思想,对每件东西都有新颖的议论。他所创作的器具中,有许多至今为人所用。”周作人也认为《闲情偶寄》“有与自然与人事的巧妙观察,有平明而又新颖的表现”。
"""
Weekly42:10.9~10.15
读书:《见字如面》
<div class="tc-subtitle">發表於 <$view field="modified" format="relativedate"/></div>
没有什么比信笺更能承载历史和感情了。
一封信,两个人,一个时代,两个当事人,一段历史,一份恩怨情仇。
打开一封信,还原一段历史现场,见字如面。
《见字如面》是一档读信节目所读信笺的合集,择取的信笺上到秦国一位士兵的家属,下到去年一位父亲写给自己自闭症孩子的未来信。有遗书,有家书,有情书,有公开信,每一封信都有浓的化不开的承载。正如前沿所示“入选的信件一定要值得在今天被更多人看到。这个表述很主观,细化一些的标准是,它必须能为今天的人提供对历史、社会、人情和人性的认知价值,能激发大家的独立思考。”

待续
[[郁达夫写给沈从文的信|http://telegra.ph/%E9%83%81%E8%BE%BE%E5%A4%AB%E5%86%99%E7%BB%99%E5%8C%97%E6%BC%82%E6%B2%88%E4%BB%8E%E6%96%87%E7%9A%84%E4%BF%A1-10-23]]
无论如何掩盖,历史总归要不被人遗忘,要不被人揭露真相。

关于抗日战争,国共两党的奉献如今并非为敏感话题,大陆很多学者普遍的认为蒋介石及其领导下的国民党对抗日战争做出了决定性的贡献,这一点是永远也不可磨灭的。
关于战后问题,关于战后日本问题,我至今很难理解为什么共产党会做出那样最终的决定,而后又在大陆改革开放时候接受日本很多援助和贷款。
在Jay Taylor的《蒋介石与现代中国的奋斗》中我找出关于战后问题的本来样子:

<<<

(时间:开罗会议时)在这次严肃的长谈中,两人(蒋介石与罗斯福)似乎对一切事情都有相同共识。蒋赞同罗对于日本未来政府形态应由日本人民决定的看法。他提议,日本对中国的赔偿可以用工业和战争机械设备、商船及其他实体财产支付。他觉得驻日盟国占领军应由美国领衔;但罗坚持应该由中国国军来主导。蒋也同意罗对“俄国共产主义之政策”,强调莫斯科不可信赖,但又说在对苏关系上,将听从罗斯福的指挥。罗斯福强力支持东北和台湾回归中国。两人早先在通信时就有共识,对战后世界有一致的看法,尤其认为必须终结殖民主义。此外,蒋还提到两人讨论了苏联参与对日战争的问题以及新疆的局势。蒋对这次会谈的结论是“非常满意”。罗斯福“以老友待我”。(Chiang Diaries, Hoover, November 23, 1943, box 43, folder 10; FRUS(1943): The Conferences, pp.322-325.)
<<<

战后最初的决定与最终的结果如此天壤之别。历史不能假设,如果可以假设是最初的样子,当今东亚世界不知道少了多少纷争和纠葛。

在开罗会议时另一个有趣的现象时第一夫人(宋美龄)艳压群雄。

<<imageSlider [[http://i65.tinypic.com/34j4qpl.jpg]]
"//宋美龄美国国会演讲//">>

<<<
“1943年11月21日(开罗会议),三大巨头、盟国联合参谋长团以及大小幕僚的第一次全体会议当中,蒋宋美龄是唯一的女性。英国参谋总长阿兰布洛奇(Lord Alanbrooke)元帅说,当她在窄裙内挪腿换个姿势时,他好像听到年轻军官们发出一股低声的叹息。相形之下,阿兰布洛奇形容她的丈夫,这位中国领袖像“松貂和雪貂的混种”。(参见:Barbara Tuchman(杜希曼),Sand against the Wind: Stilwell and the American Experience in China (London: Macmillan, 1971), p.402.)

罗斯福总统住在美国大使官邸。当天夜里,罗在大使官邸设宴招待蒋氏夫妇。霍浦金斯是唯一的陪宾。蒋夫人脚登露趾鞋、身穿黑色丝绸旗袍,和去年叼扰甚久的老朋友罗斯福打招呼。双方都有译员坐在边上,但美龄不时修正她先生译员的翻译。蒋原本就视罗斯福是“超乎常人”的大政治家,经过一整夜坦诚长谈后,对罗更增添敬意。相形之下,蒋的尖噪子以及在权贵宾客前的拘谨、礼貌,却没让意气风发、随意的美国东道主产生太多的友谊感。(Ray Huang(黄仁宇),Chiang Kai-shek and His Diary as a Historical Resource (Armonk, N.Y.: M.E.Sharpe, 1996), part 2, p.53.)
<<<

<iframe width="560" height="315" src="https://www.youtube.com/embed/K1UEz9us8zY" frameborder="0" allowfullscreen></iframe>

宋美龄从来是不缺聚光灯的,或者说是自带光环。宋对中国之贡献可以说罄竹难书,无论是在抗战时期,在美国国会演讲,用个人魅力影响国际关系,还是在在内战时期,用冷静和理智处理西安事变,近代中国历史都深深的烙印着宋的影子。

<$button message="tm-close-tiddler">Close Me!</$button> 
齐如山,民国一代大家。中国剧作家、戏剧理论家、历史学家。还可以加一个民俗学家。

齐如山出身门第,世居北京。齐如山医生成就,总结起来有三点:一、对当时留法学生之帮助,成立“留法勤工俭学会”;二、促进京剧之发展,为梅兰芳、杨小楼、尚小云编排了诸多优秀京剧曲目,并组织梅兰芳美国、日本以及俄罗斯等国的演出访问;成立北平国剧学会、并成立了国剧传习所等民间组织;将京剧称为“国剧”。(这有点像李渔,见[[闲情偶寄]])三、日本占领时期的铮铮气节。

<<imageSlider [[https://p1.cdn.img9.top/ipfs/QmPiQqNiLNifX4Vg9meVxZEPXDRFt6ZGQJUweUzaTvCiHM?1.jpg
+]]
"//1923年,自左至右:罗瘿公、程砚秋、吴富琴、齐如山、许伯明。//">>

在日本侵华期间,大隐于市的齐如山写了不少书,其中就包括最近几天读的《[[中国馔馐谭]]》和晚年在台湾写就的《[[齐如山回忆录-清宫史话]]》。

在[[2017年12月02日 下午 03:24:28]]中搞不明白的,关于日本战后赔款问题,经过查找了一些资料,基本有些眉目了:

# 二战后,大国基本上都放弃了对日战争索赔,如俄罗斯等(除了一些小国,如新加坡等,战后的日本一穷二白,页无力赔偿,日本天皇由此还把自己的游艇赔给了新加坡);
# 日本战后也并非没有向中国赔款,而是用一些重型机械等方式抵赔(日伪满洲国上的资产被俄罗斯占去);
# 由于战后国共两党之争,日本在中间做平衡游戏,由此得利。为了争取一些国际空间,由此放弃对日索赔;
# 日本从战争的颓废中复苏后,对中国大陆进行了大量的援助或无息贷款,数目超过抗日战争时期美国对华援助的10倍还多。 
!This is an encrypted Tiddler
这本书不教技法,更多是梳理和盘点,大多都为耳熟能详之物,所以本书大部分章节皆可掠过。书尾部道有一节菜名考据内容蛮有趣。 如对“鸡蛋炒饭”为什么叫“炒木须饭”,作者调查研究后弄清楚是和明朝太监们有关。明朝太监由于忌讳“鸡”和“蛋”,而明朝一代,太监又重权在握,所以民间为了不惹“阉党”,就把凡和“鸡”和“蛋”有关的菜都想办法避之。例如鸡蛋改名曰白果,鸭蛋改名曰青果,熏鸡改名曰熏牲口,卤鸡改名曰卤牲口,酱鸡改名曰酱牲口,蛋花改名曰甩果,炸鸡改名曰炸八块,炒鸡蛋改名曰摊黄菜,熘鸡蛋改名曰熘黄菜,卧鸡蛋改名曰卧果儿,炒鸡蛋改名曰炸荷包。肉丝炒鸡蛋改名曰炒木须肉,鸡蛋炒饭改名曰炒木须饭,鸡蛋羹改名曰木须汤,大片鸡蛋羹改名曰果儿汤,讹为逛儿汤。现今这些名字大部分仍在北京、乃至北方地区仍在使用。

比之李渔的《[[闲情偶寄]]》,虽然后者不是美饌民俗专著,但李渔的笔墨更有趣一些。而李渔和袁枚的[[随园食单]]同阅,后者则更胜一筹,专著美饌精馐,而又意在食外绵绵流长,多了一分闲,二分情、三分雅。
“津逮”的本意是由渡口坐船到达目的地,后用来比喻为学的门径。所以“文言津逮”也就是“文言入门”。

《文言津逮》是“大家小书”。之所以说大家,著者为张中行老先生,吕叔湘先生(中国语言学家,近代汉语学的拓荒者和奠基人。)作序并起的书名,启功先生写的书名,集三大家于一声。张中行,中国著名学者、哲学家,散文家,与季羡林、金克木有“燕园三老”之称,前妻杨沫。所谓“小书”者,只是就其篇幅而言,篇幅显得小一些罢了。用了两天上下班路上实践便看完了。

正如书名为“津逮”,“这里边是讲怎样学习文言的文章,一共十篇,外加一篇附录讲工具书”。虽然小小一本书之于浩瀚文言世界仅为沧海之滴水,而张先生通过多年的任教经验,给有志于了解文言的新人指出了个人“端倪”。一,指出了学习文言文的都有哪些“坑”,如文义之间的古今异形、古字通假、古今同字异声等;二,告诉了一些进入文言世界的一些门径,学习文言文的方法,以及读什么和怎么读。

在如何学习文言的方法问题上,多年来一直有两种意见之争:一种意见是偏重多读,以“熟”为基础求会;另一种意见是偏重摸清规律,以“知”为基础求会。或者说,一条路是以多读为主,以文言的词汇语法知识为辅;另一条路是以文言的词汇语法知识为纲,以纲统阅读的目。张先生主张走前一条路,就是走以多读为基础求会求通的“老路”,因为“这老路虽然要费相当多的时间和精力,却是有保证的通路”。

诚如我之前思考的[[读文言文有什么用?]],现在我们每天使用中文,学习中文,不能与文言文割裂而用之,要知道它的传承性,要知道它的来龙去脉,要知道我们是不是说出来的字、词是有一定的故事和源远的。这也是为什么这些年读书目录里,我总少不了加一些文言基础或者古代文学类读物。

基于此,索性把书名也“窃”了去,把之前看的古代文学书目集结为“[[文言津逮系列]]”。<<tag Album>>
上接:<$details summary="读历史读的是什么?">

{{2017年12月07日 下午 06:49:01}}
</$details>


“历史的教训就是从来不吸取教训”!

“年年岁岁花相似,岁岁年年人不同”

现代历史学家提出“历史是一个螺旋上升”的存在状态。其实在我看来,历史只是一个纵向的时间轴而已,没有什么螺旋,也没有所谓的上升。人类不断的重复着历史上的悲哀和错误,也不断在历史的悲哀中忘记历史的悲哀。也许这就是人们想从历史中找寻的,一种不断修正悲哀的领导妙药。之所谓也没有什么上升,因为人类根本不知道人类的未来走向,不知道分享,何来上升的位置判断?也许是倒退,为什么这么说?也许人类慢慢的走向了毁灭,走到了终点,就像“2012”一样,人类的历史发展过程中也不是没有这种迹象存在,这样的毁灭难道不是一种倒退或者是一种轮回的圆形存在轨迹吗?
''维摩诘'',是释迦摩尼佛时代的一位信徒,并未出家,以居士身份修行,终成大果,成为佛教在家修行的典范。

''《维摩诘经》'',中国禅宗四部宗义之一(《楞伽经》、《金刚经》、《维摩经》和《六祖坛经》),法师鸠摩罗什带领汉传弟子所译,经文主要叙述维摩诘菩萨(居士)与诸位菩萨和声闻罗汉满智慧和譬喻的问答,它以辩论的方式来详细说明大乘佛教与小乘佛教在教义上的分别,集中讨论[[不二论]]。在禅宗和净土宗中,维摩经有重要的地位,它强调唯心净土:

<<<
将分别心与执著心放下,就是做为佛教徒的基础了。也就是禅宗的:不思善、不思恶、而将心念专注于当下,而烦恼即是菩提的种子,只要去除瞋心、则当下即是佛国净土。
<<<

《维摩诘经》的“[[不二法门|不二论]]”思想,深深影响了禅宗的“不二”思想。即所谓的`“动静不二,真妄不二,维摩明一切法皆入不二门。”`

《维摩诘经》中文版本,是在中国历史上动荡的南北 朝时期,由西域请来的胡僧鸠摩罗什所翻译的。最初是前秦的苻坚发兵去请鸠摩罗什,但鸠摩罗什还没走到中国,苻坚的前秦就亡国了。后来就由姚兴在今天陕西地区所建的后秦国,出兵请到鸠摩罗什来中原。为了请来这一位学者,发兵几十万,灭了扣住鸠摩罗什的三个西域小国家,大概也只有中国南北朝这些野蛮的皇帝们才做得出来。佛法路也是血!

《维摩诘经》中文版不仅佛理通俗易懂,故事生动,文字也很优美,传入中国后对汉文化、文学影响源远流长(佛教极大的丰富了汉文化)。南北朝时期的文人学士最爱清谈与《维摩经》;唐代文人的唐诗,也几乎无不受《维摩诘经》的影响;宋代以后的士子多好禅学。后世的昆剧《天女散花》就是取材《维摩经》。

维摩诘是在家修佛的典范。星云大师说:我将每一个人都当作维摩居士。王维等唐代诗人皆已维摩居士为榜样,而国画大师张大千甚至将其住所命名为《维摩精舍》。由此,我把有关佛教的读书内容集合在<<tag 维摩诘>>之下,也算是一种学习勉励修行吧,希望能成为''佛门津逮''(见[[文言津逮系列]]之“津逮”)。
历史就是一串糖葫芦,一条时间轴串起事件和人物,内中酸甜苦辣咸,只有当事人自知。

读近代史,其中跳不过去的一人物就是李鸿章 <<ref "[1]">>。正如此书作者梁启超 <<ref "[2]">> 序中所言:

> 四十年来,中国大事,几无一不与李鸿章有关系。故为李鸿章作传,不可不以作近世史之笔力行之。著者于时局稍有所见,不敢隐讳,意不在古人,在来者也。

<<imageSlider  [[https://i.loli.net/2018/10/09/5bbc4e7b5e871.jpg]]    "//两江总督任内的李鸿章//">>

李鸿章无论是当世还是时下,都是一个争议性人物。而梁启超笔下的李鸿章,不可不读。二位年龄相差50岁,前者为晚清重臣,力挽飘摇欲坠的清朝于狂澜,举洋务以图兴;后者为晚清公知,抛头颅洒热血,组织“公车上书”政治运动反对李鸿章签订马关条约,力图维新救亡,变法图兴。两位的目标一直,图存图兴;两位的方法相同,洋务和维新;而两位的发力方向却相反,一人扶,一人推。如今,曾经的“敌人”评价曾经的“对手”,岂不精彩。

<<imageSlider  [[https://i.loli.net/2018/10/09/5bbc4ec742fc9.jpg]]    "//梁启超//">>

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-2x fa-pull-left "></i>@@ 
<<footnotes "[1]" "晚清两朝重臣,历经太平天国、捻军、洋务运动、中法战争、甲午战争、义和团运动。与曾国藩、左宗棠、张之洞并称“晚清四大名臣”。">>

<<footnotes "[2]" "梁启超师从康有为,就李鸿章签马关条约发起“公车上书”(中国群众性政治运动的开端),力图维新救亡,后于与康进行戊戌变法,事败后出逃日本,在海外推动君主立宪。倡导新文化运动,支持五四运动。">>
昨晚偶然看到高晓松的一档节目系列竟然是[[闲情偶寄]],可能高想取这四个字的本意--- ---闲适怡情偶字片语以寄情吧。读李渔之《闲情偶寄》已接近尾声,其中速览不少章节,诸如演习部--- --- 古代戏曲的剧本、声韵和曲子等、居室部--- --- 室内陈设布置、声荣部--- --- 女子穿衣打扮及饮馔部,这几部分因时时移景迁,读之意义不大。而词曲部--- --- 戏曲台词剧本声律韵味、种植部、颐养部,则趣味良多,可能古今声色男女都一样吧。

速览部分些许摘要:

<<<
妇人之衣,不贵精而贵洁,不贵丽而贵雅,不贵与家相称,而贵与貌相宜。
<<<

<<<
声音之道,丝不如竹,竹不如肉,为其渐近自然。吾谓饮食之道,脍不如肉,肉不如蔬,亦以其渐近自然也。
<<<

李渔自喻为“香国平章”<<ref  "[1]">>,嗜花如命:

<<<
予有四命,各司一时:春以水仙、兰花为命,夏以莲为命,秋以秋海棠为命,冬以蜡梅为命。无此四花,是无命也;一季缺予一花,是夺予一季之命也。
<<<
饭可以不吃,而花不可不看,真乃花痴是也:

<<<
记丙午之春,先以度岁无资,衣囊质尽,迨水仙开时,则为强弩之末,索一钱不得矣。欲购无资,家人曰:“请已之。一年不看此花,亦非怪事。”予曰:“汝欲夺吾命乎?宁短一岁之寿,勿减一岁之花。且予自他乡冒雪而归,就水仙也,不看水仙,是何异于不返金陵,仍在他乡卒岁乎?”家人不能止,听予质簪珥购之。予之钟爱此花,非痂癖也。
<<<

李渔写花,以花比人,人有性,花有灵,多品评其性情品格,偶尔提及养植之道。

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-2x fa-pull-left "></i>@@ <<footnotes  "[1]" "平章:官名,常有以平章代指宰相。此处李渔自诩为花卉中有权威的品评者。">>

梁启超在书的开篇就为“评李鸿章”定了基调:

<<<
吾敬李鸿章之才,吾惜李鸿章之识,吾悲李鸿章之遇。
<<<
而非“腹黑”到底,足见梁气度之大。相反某些方面还为李鸿章进行了辩护:

<<<
天下惟庸人无咎无誉。举天下人而恶之,斯可谓非常之奸雄矣乎。举天下人而誉之,斯可谓非常之豪杰矣乎。虽然,天下人云者,常人居其千百,而非常人不得其一,以常人而论非常人,乌见其可?故誉满天下,未必不为乡愿;谤满天下,未必不为伟人。
<<<

这也不是说梁启超就没有了立场,作为与师力倡维新变法的先驱,与李鸿章的立场是非常鲜明的:


<<<
史家之论霍光,惜其不学无术。吾以为李鸿章所以不能为非常之英雄者,亦坐此四字而已。李鸿章不识国民之原理,不通世界之大势,不知政治之本原,当此十九世纪竞争进化之世,而惟弥缝补苴,偷一时之安,不务扩养国民实力,置其国于威德完盛之域,而仅摭拾泰西皮毛,汲流忘源,遂乃自足,要挟小智小术,欲与地球著名之大政治家相角,让其大者,而争其小者,非不尽瘁,庸有济乎?
<<<


梁启超认为李鸿章充其量是一位权臣或者能臣,尽管李也推行洋务运动,创办实业,然这一切都是”弥缝补苴,偷一时之安“。没有从根本上变革清朝之积弊,根本是什么?是梁启超所说的”政治之本原“----国家政治制度。而身在其位,谋其政的李鸿章,怎么可能从内部改革几千年的帝王制度那?
在没有把《[[李鸿章传]]》看完前,先把李鸿章的资料补了一一下。这位清末重臣一生共签下30多个条约,又大多为不平等条约。生逢一朝末世,成也“颓世”,毁也“颓势”。在颓世之中崛起,才华尽显;在颓势之时激流荡舸,忍辱负重。然以其一人之力岂能扶将倾之大厦?正像李鸿章对自己一生的总结:

<<<
“我办了一辈子的事,练兵也,海军也,都是纸糊的老虎,何尝能实在放手办理,不过勉强涂饰,虚有其表,不揭破,犹可敷衍一时。如一间破屋,由裱糊匠东补西贴,居然成一间净室,虽明知为纸片糊裱,然究竟决不定里面是何等材料。即有小小风雨,打成几个窟笼,随时补葺,亦可支吾对付。乃必欲爽手扯破,又未预备何种修葺材料,何种改造方式,自然真相破露,不可收拾,但裱糊匠又何术能负其责?” <<footnote "[1]" "吴永 《庚子西狩丛谈》 卷四">>
<<<

<<imageSlider  [[https://d.pr/FREE/GUCqI0+]]    "//李鸿章在《辛丑条约》上的签名花押//">> <<footnote "[2]" "在条约上签字的时候,李鸿章故意把自己的名字连在一起,变得难以辨认,使其看起来像一个“肃”字.">>

梁启超在[[李鸿章传]]中认为李''不学无术'',所以成为不了当世英雄。在彼强弩之末朝运下,身为专制政权下的才臣或权臣,命运无非两种:一、逆势而上,鞠躬尽瘁;二、大势归隐,呜呼哀哉。如若为弄臣或奸臣,可能命运就不一样了,要不作福作威,要不趁火打劫。李选择了前者,尽管身背三十个不公平条约签订者的骂名,可换来了清一代更多的苟延残喘。

<<<
“总是开天辟地的圣人多事,不该生女子设钱财,把人限到这地步”。
<<<

这是李渔小说《肉蒲团》得最后一句话。未央生一生嗜隐,愿作一位犹如西门庆,枕花籍柳,偷香窃玉,又如出家人一样常坐蒲团,只不过这个蒲团希望是肉坐的。李渔小说也跳不开古代小说娱人教事的窠臼,未央生淫人妻女,妻女亦被人淫。末了,终大彻大悟,遁入空门,真正坐了蒲团。李渔的《肉蒲团》被屡遭禁毁,虽为说事教人,但书中充满了人欲肉糜。而集李渔一生经验和生活智慧的《[[闲情偶寄]]》一半人文艺术--- --- 戏剧、剧本创作,一半为生活艺术--- --- 吃穿住行乐,尤其后半部分充满了胭脂气--- ---女子的姿色修容冶服习记技--- --- 和荷尔蒙--- --- 男人的行乐节色养生调饮。李渔常年身处梨园之春 <<footnote "[1]" "梨园,戏班,戏院。">>,对女子姿色仪容鉴赏自然颇有心得;而对男女敦伦之事,采阴补阳御女之术,如卖油郎,但手熟尔。就如李渔之言“孔子云:“素富贵,行乎富贵。”人处得为之地,不买一二姬妾自娱,是素富贵而行乎贫贱矣。”鲁迅在《中国小说史略》第十九篇《明人之小说》中也有是评价:“惟《肉蒲团》意想颇似李渔,较为出类而已。”

什么女人最美?

<<<
媚态之在人身,犹火之有焰,灯之有光,珠贝金银之有宝色,是无形之物,非有形之物也。惟其是物而非物,无形似有形,是以名为尤物。尤物 <<footnote "[2]" "是物而非物,无形似有形之态度">>者,怪物也,不可解说之事也。凡女子,一见即令人思,思而不能自已,遂至舍命以图,与生为难者,皆怪物也,皆不可解说之事也。
<<<

这是李渔眼中的尤物,最美。用今天的话说,有气质的女人最美!

李渔是个享乐派,鼓吹“行乐第一”“止忧第二”,人生路,且行且乐:

<<<
"伤哉!造物生人一场,为时不满百岁.......即使三万六千日尽是追欢取乐时,亦非无限光阴,终有报罢之日。"
<<<

什么时极乐?男女房事也!

李渔的房中术,可谓练达,堪称御女之术,“凡借女色养身而反受其害者,皆是男为女用,反地为天者耳。倒持干戈,授人以柄,是被戮之人之过,与杀人者何尤?”针对御女行乐老李提出了“御女六不要”:

首先,男女行乐不要“干柴”与“烈火”,要女方得有所心思,为什么那?

<<<
使男子至乐,而为妇人者尚有他事萦心,则其为乐也,可无过情之虑。使男妇并处极乐之境,其为地也,又无一人一物搅挫其欢,此危道也。
<<<

其次,难过的时候也要节制。“然忧中行乐,较之平时,其耗精损神也加倍。”

再者,饥、寒、醉、饱四时,皆非取乐之候。

<<<
然使情不能禁,必欲遂之,则寒可为也,饥不可为也;醉可为也,饱不可为也。以寒之为苦在外,饥之为苦在中,醉有酒力之可凭,饱无轻身之足据。总之,交媾者,战也,枵腹者不可使战;并处者,眠也,果腹者不可与眠。饥不在肠而饱不在腹,是为行乐之时矣。
<<<

第四,劳累刚过戒行乐。

第五,节新婚乍御之欲。(这一点最有意思)

<<<
新婚燕尔,不必定在初娶,凡妇人未经御而乍御者,即是新婚。无论是妻是妾,是婢是妓,其为燕尔之情则一也。乐莫乐于新相知,但观此一夕之为欢,可抵寻常之数夕,即知此一夕之所耗,亦可抵寻常之数夕。能保此夕不受燕尔之伤,始可以道新婚之乐。不则开荒辟昧,既以身任奇劳,献媚要功,又复躬承异瘁。终身不二色者,何难作背城一战;后宫多嬖侍者,岂能为不败孤军?危哉!危哉!当筹所以善此矣。善此当用何法?曰:静之以心。虽曰燕尔新婚,只当行其故事。“说大人,则藐之”,御新人,则旧之。仍以寻常女子相视,而不致大动其心。过此一夕二夕之后,反以新人视之,则可谓驾驭有方,而张弛合道者矣。
<<<
第六,节隆冬盛暑之欲。
李渔说冬天和夏天时男人最难控制的季节,因为冬天裸抱取暖,夏天袒裼裸裎,所以这两个季节就不要太放纵了,要有守势,“能守则日与周旋而神旺,无守则略经点缀而魂摇。”有了守势,慢慢就会成为自然,达到了炉火纯青的地步。“无时不堪昵玉,有暇即可怜香。”

李渔,真性情人也!
今天看到推友许晖大作《这个字原来是这个意思》,挺有意思的一本书。这部正是我从去年就开始啃的《[[说文解字]]》的精华摘录版吗?看起来许晖是个有心人,点滴成集,集羽沉舟。《说文》才看了三分之一,以后也把发现的好玩字记录下来,以飨!
自部:

“自:鼻也。象鼻形。”“自”的本义为鼻,而其基本义为自我、自己。造词智慧:人谓自我时往往以手自指其鼻。

同理可知,“臭”从自,从犬,谓以鼻嗅,犬鼻嗅觉最为灵敏,故其字从犬。还有“息”,“息”字从自,从心。中医称一呼一吸为“息”,也和鼻子有关,“息息相关”的息就是其本义。

有“自”就有了“白”。“白:此亦自字也。省自者,词言之气从鼻出,与口相助也。凡白之属皆从白。”

既然“自”就是鼻子了,为什么还有一个“鼻”字那?

“鼻:引气自畀也。从自、畀。“畀,读bì,给与。

“自”和“鼻”都指鼻子,前者为象形字,为独体文;后者为亦声字,为合体字。“自”是原生词,其音义的结合是约定俗成。“鼻”则为同源派生词,“畀”与“鼻”为母子,即源词与派生词关系。

<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201712]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
这应该是2017年最后一条日志了。约定成俗的情景下,这条日志是盘点和展望。

先说读书。

2017年读书数量上略低于上一年([[2016读书目录]]),[[2017年读书的数目|2017读书目录]]是100本,很完整的一个数字啊(见 <<tag 已读>>,有些速读本无需进入 [[Library]]的<<tag Book>>标签,如一些古代人文笔记等)。这100本,有一些还没有读完(见 <<tag 未读>>、 <<tag 想读>>),需要跨年,如《[[说文解字]]》、《[[维摩诘的花雨满天]]》、《洛阳伽蓝记》、《史记》以及《古文鉴赏辞典》,这几本快不了,不能囫囵吞枣,需要慢慢的磨,2018年能读完并再续记本已经不错了。而《[[蒋介石与现代中国的奋斗]]》、《艺术的故事》、《[[思考快与慢]]》 等,也在未完成状态,这类书信息量大,也可能是在自己兴趣范围之内,需要精读,需要认真的思考和撰写读书笔记,所以也不能快,希望能在三月份结束未读状态。

2017年的读书笔记比之前更加系统和详尽了。之前的读书笔记都是基于~OneNote或~Evernote一些碎片化的记录,偶尔一些发布在微信公众号(见[[事了拂剑去|Wechat]])上,但也是随兴所至,去年一年也就写了十几篇,不该!2017年后半年开始陆续并认真的开始在~Tiddlywiki上写读书笔记了(见 <<tag Album>> [[2017's Journal]]),基本上保持一天一篇的规律进行,目前已经有70多篇了。写读书笔显而易见的有几点好处:一、读书而致用;二、知识从碎片化到系统化;三、提高文字的表达能力;四、养成了良好的习惯。这几点对我来说是显而易见的效果,例如近三年的读书书目列表中一半为文言,读文言不仅要会读,更重要的是会用--- 在一定的文言语感下学会表达(见[[读文言文有何用|2017年11月25日 上午 02:47:04]]),写读书笔记是不错的锻炼文言表达的机会(见[[文言津逮系列]])。再例如,从前年就想开始--- ---准确的说是企图--- --- 对思维逻辑以及思维框架进行一些系统的学习和实践,而通过读书笔记和平时相关知识的积累(见 [[PKM]],个人知识管理),逐渐对[[思维框架|Thought Framework]]研究有了好的开头,好的开头是成功的一半,这话不假,2018年这个系列一定会丰富起来的,相关的书目也列入了2018年的日程中(见 <<tag "Thought Framework">>)。

随着读的闲书越来越多,最近一直有一种“做一下读书规划”的紧迫感。不是读闲书无用,而是生命短暂,所以从2017年下半年开始,读书就开始相对谨慎起来了,在选书上开始舍得花时间了。这还是不够的,还需要认真的做一些思考和调整,至少做到以下这几点:

"""
一、同时读的书目不超过4本(见[[读书忌贪|2017年12月12日 上午 06:49:08]])<<tag 正读>>;
二、书目设置要科学:@@color:orange;认知(人文经典,30%)+知识更新(社科,30%)+厚重(元典,20%)+趣味(兴趣;20%)@@;
三、在书目选择上要花更多时间,先研究再读 <<tag Library>>;
四、读书时间合理分配:速度(占60%)+精读(占40%);
五、输出部分加大 <<tag Writing>>:读书笔记(占60%)+写作(占40%)。
"""
<<imageSlider  [[https://cl.ly/of6P/Snipaste_2017-12-31_22-41-01.png]]    "书目占比分配">>

这四点需要在读书的过程中再进行微调,以观后效。
//2017年12月30日 下午 01:41:16//

再说其它。

其它,无非工作、生活以及其它。工作,准确的说是事业,一句而概之:同志需要努力。不过事业之与读书,都是长期性工程,没有什么捷径,二者相辅相成。当然也有暴发户和运气存在,不过这终究长不了。而运气之说是存在的,运气即审时度势,这个度和势是否能抓住,还是需要读书的积累。所以,万般皆下品惟有读书高。

生活。生活是两种状态,一种是生,一种是活。每日为了工作为之生,超越工作为之活,生易,活难。<<tag Life>> 活,又是两个阶段,为己,不为己。为己,活的自在,活出一种深度;不为己,活的精彩,活出一种宽度。希望自己能在未来的日子里少点为己,多点不为己。

//2017年12月30日 下午 01:41:16 //
"""
17-01-1-前往内蒙的列车上:
1.《觚剩》 清·钮琇 
2.《鹿鼎记》金庸 (重读)

17-01-20-小年夜:
3. [[《容斋随笔》|三家村公开版权精品书籍]] 清·洪迈
4.《阿城精选》阿城 @@color:red;^^★^^ @@

17-01-26-再有一天过年了:
5. 《秋灯锁亿》 清·蒋坦

17-01-30-初三
6. 《楞严经》
7.《从文自传》 沈从文
8.《浮生再记》 清·蒋坦  @@color:red;^^★^^ @@

17-02-1 -破五
9. 《边城》沈从文

17-03-08 妇女节
10.《胡雪岩全传》@@color:red;^^★^^ @@高阳
11.《了凡四训》明·袁了凡

17-03-09 春天来了
12.《[[我的应许之地]]-以色列的悲情与荣耀》@@color:red;^^★^^ @@阿里沙维特

17-03-16 春日荣荣
13. 《刀锋》英·毛姆
14. 《经典音乐故事》沈弘
15.《曾文正公嘉言钞》 曾国潘

17-03-26 阳光灿烂的日子
16.《经典常谈》朱自清  原典系列一   <<footnote "[1]"其它系列见[[2018读书目录]]">>
17.《声律启蒙·弟子规》清· 车万育 李毓秀
18. [[《酉阳杂俎注释》|三家村公开版权精品书籍]]赵弘志

17-04-2 清明节
19. 《陶庵梦忆》@@color:red;^^★^^ @@明·张岱

17-04-12 大病之后 新Kindle到手
20. 《怎样读书》胡适
21. 《哈扎尔辞典》塞尔维亚 · 洛拉德·帕维奇
22.《人类简史》@@color:red;^^★^^ @@以色列 · 尤瓦尔·赫拉利

17-04-17 夏天来了,开始穿文化衫了
23. 《[[中国哲学十九讲]]》牟宗三
24.  《[[苏东坡传]]》林语堂

17-04-18 无聊的下午
25. 《北京折疊》郝景芳
26. 《白夜行》东野圭吾·日
27. 《桃花扇》清·孔尚任
28. 《二手时间》俄·阿列克谢耶维奇

17-04-22 世界读书日
29.《[[如何阅读一本书]]》[美]莫提默·J·艾德勒 查尔斯·范多伦
30.《[[十一种孤独]]》理查德·耶茨(Richard Yates)

17-04-29 五一小长假
31.《特斯拉之父》
32. 《[[硅谷钢铁侠]]》@@color:red;^^★^^ @@
33. 《[[李鸿章传]]》梁启超
34.《曾国藩家书》李鸿章校稿
35.《傲慢与偏见》简·奥斯丁
36. ~~《菊与刀》鲁思·本尼迪克特~~

17-05-2 第一期读书会试运行
~~37.《人性的弱点》[美]卡内基~~

17-06-1 忙乱的五月份之后的六一儿童节
38. 《字体故事》西蒙·加菲尔德
39. 《历代笔记概述》 刘叶秋
40. [[《中华雅文化:随园食单、林泉高致、长物志、园治》|Weekly24]]
41. 《思考,快与慢》丹尼尔·卡尼曼

17-06-6 了却了一桩心思 南无阿弥佗佛
42.《[[禅与摩托车维修艺术]]》罗伯特·M·波西格 @@color:red;^^★^^ @@
43.《理想国》柏拉图

17-06-8 最近无名火很大
44.《[[说文解字]]精读》@@color:red;^^★^^ @@殷寄明

17-06-12 这一周很闲,但很恐慌
45. 《精进:如何成为一个很厉害的人》采铜

''07-1 这就进入下半年了''
46. 《人为什么活着》王小波
47.  《[[我的应许之地]]》@@color:orange;^^★^^ @@以色列·阿里·沙维特

''07-03 KIndle免费书库''
48. 《人间词话》王国维  
49.《格言联璧》(清)金缨、 金缨
50. 《胡适四十自述》胡适

''07-07  换一个新环境,旧书新看''
51.《统一与分裂》葛剑雄

''07-14 似乎现在保持在了每周一本书''
52.《[[十一种孤独]]》 理查德·耶茨
53. 《[[思考快与慢]]》丹尼尔·卡尼曼

''08-01 时间多起来了''
54.  《[[蒋介石与现代中国的奋斗]]》@@color:orange;^^★^^ @@ 美·陶涵(Jay Taylor)
55. 《[[艺术的故事]]》贡布里希 (Sir E.H.Gombrich)

''09.02 多事之秋,诸事不宜,旁骛忧烦''
56.《清言集》
57.《民国经典小说合集》(19册:金粉世家 啼笑因缘 春明外史 夜深沉 京华烟云 风声鹤唳 旧巷斜阳 呼兰河传 血纸人 十二金钱镖 亭子间嫂嫂)

''09.15 心情回归,重启读书''
58. 《[[维摩诘的花雨满天]]》 南怀瑾
59. 《敦刻尔克》 [美]沃尔特·劳德

''09.17 离魔去芜 心无旁骛''
60. 《[[浮生三记]]》 沈君山
61. 《[[雪涛谐史]]》  明·江盈科

''09.18 秋意浓''
62. 《[[江湖丛谈]]》连阔如

''09.23 失意 不知所措 迷茫''
63. 《古文鉴赏辞典》(新一版)(全二册)  
64. 《[[文言津逮]]》 张中行
65. 《古典小说漫稿》吴小如

''09.24 秋高气爽  古典音乐的午后''
66. 《枕草子》(日)清少纳言(周作人·译)
67. [[《小螺庵病榻忆语》》|三家村公开版权精品书籍]]清·孙道乾

''09.25 秋雨拍窗 寂寞清冷''
68. [[《影梅庵忆语》|三家村公开版权精品书籍]]清·冒襄

''09.28 暖洋洋的太阳 慵懒的思想 长假前的彷徨''
69. 《[[芳华]]》 严歌苓

''10.1 长假自然醒 懒床看书''
70. 《慈禧全传》@@color:red;^^★^^ @@ 高阳
~~26. 《家书中的百年史》 萧功秦~~

''10.2 没有什么比看书自在了''
71. 《寓言集》胡安·何塞·阿雷奥拉 (Juan José Arreola) 
72. 《原典书坊合辑》@@color:orange;^^★^^ @@(鲁迅 闻一多  梁启超 李石岑王国维 蔡元培 陈柱) 

''10.6 假期尾声,继续游荡在清史''
73. 《[[清朝的皇帝]]》高阳
74. 《清末四公子》高阳
75. 《乾隆韵事》高阳

''10.9 长假之后 萧秋雨冷''
76. 《高阳文集》高阳
77. 《流沙河讲古诗十九首》流沙河

''10.17 19大,草木皆兵''
78.《 [[见字如面]]》

''10.23 😭''
79. 《身边的江湖》土家野夫

''11.1 满地落叶🍂 更显瞅瞅''
80. [[《耳食录》|三家村公开版权精品书籍]]清·乐钧
81. 《梦中的欢快葬礼和十二个异乡故事》马尔克斯
82. [[《洛阳伽蓝记》|三家村公开版权精品书籍]]北魏· 杨炫之

''11.8 趁双11淘几本书''
83. 《孔子的智慧》 林语堂
84. 《欧亨利短篇小说集》欧亨利
85.  《[[一个人的书房]]》王国维
86. 《[[阅读是一座随身携带的避难所]]》毛姆
87. 《[[宋代人物列传]]》欧阳修

''11.9 双11囤''
88. 《世界美术名作二十讲》傅雷
89. 《先知中国》余世存
90. 《缘缘堂随笔》丰子恺
91. 《艺术哲学》丹纳, 傅雷
92. 《毛姆读书随笔》
93. 《[[老味道]]》汪曾祺
94. 《紫禁城的黄昏》庄士敦
95. 《哈佛非虚构写作课 : 怎样讲好一个故事》(美)马克•克雷默

''11.13 [[三家村精品古籍|三家村公开版权精品书籍]]''
96.《 [[闲情偶寄]]》@@color:red;^^★^^ @@

''11.16 双11余波 又收一本''
97. 《[[品人录]]》易中天

''11.21 没有文字版的古籍看起来真费劲''
98. 《[[青泥莲花记]]》明·梅鼎祚

''11.27 寒冷的北京开始驱逐低端人口''
99. 《[[乡下人的悲歌]]》美· J.D. 万斯

''12.2 下周又开始忙了''
100. 《[[中国馔馐谭]]》 民国·齐如山

[[2019读书目录]] | [[2018读书目录]] | [[2016读书目录]] | [[读书检索|Book List]] | [[读书日志|Reading Logs]]

//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button> 
今天感觉好累!长假后的疲惫感剧增。

在下班路上总算把[[蒋介石与现代中国的奋斗]]上册看完了。看本书的战线拉的太长,前后半年有余。这就是为什么之前我说的:[[看书忌贪|2017年12月30日 下午 01:41:16]]。

虽然看了一半,但完全革新了我对蒋公的看法(看,连称呼都改了),随着看书的深入推进,由刚开始翻书时候的仅为了解,到现在的带有崇敬之情。一方面是因为蒋之性格的坚韧,一方面是蒋在乱世之局所表现出的高尚的民族大义。就以本书上半册结束处为例,蒋为了换取抗日的最后胜利,扭转中华大地抗日战争之格局,忍辱负重,甘愿在美国的淫威之下,把国军的最高军事指挥权转交给常称蒋为“花生米”先生的史迪威。当蒋接罗斯福的函电时,不仅痛哭流涕:


<<<
史迪威拿出中文译本,交给蒋;蒋默默地读完。宋子文后来告诉艾索浦,中文本比起英文本更加侮辱人。隔了一阵子,蒋放下信,把空茶杯倒过来,然后说:“我明白了。”.......等到房里只剩下大舅子,蒋才“放声痛哭”........当天晚上委员长在日记写下,下午所发生的事是“毕生上最大之耻辱”。"
<<<


而之前也同样是为了保持中国大地上抗日战争能够继续进行,在美国调停下,蒋依然放弃成见和权力,欢迎共产党的合作,但必要的前提是:

<<<

(一)美国要确保未来苏联会尊重中国在东北的主权;(二)美国要支持让英国终止她在香港及中国其他地方的 “帝国权利 ”。
<<<

这和毛及其领导的共产党完全两个做派。当蒋殚精竭虑正面与日军作战的时候,毛确在私下里巩固和发展共产党势力,以备“抗日战争后,国内必有一战”:

<<<
根据共产国际 1944 年 12 月的一份报告,直到抗战已进行七年半,中共八路军仅有 103186 人阵亡;以游击战为主的中共新四军极可能只折损数千人;但是政府军(国民党)死者逾 100 万人。换句话说,从周恩来 1940 年 1 月给共产国际的报告,至 1944 年 12 月此一报告之间——这段期间是史迪威等人坚称抗战主要由中共承担而国军并无作为的时间——中共只有约 70000 名士兵牺牲性命  。
<<<

<<<
“你必须知道所有重要学科的重要理论,并经常使用它们。要全部都用上,而不是几种,大多数人都只学过一个学科的思维模型,比如说经济学,试图用一种方法来解决所有问题。你知道谚语所说:在拿着铁锤的人看来,世界就是一颗钉子。这是处理问题的一个笨方法。”---查理·芒格
<<<

[[Thinking Models]]
整本《维摩诘经》里面最重点的重点,是告诉我们:佛法就在这个世间,我们就在自己的身心上自了。如果求他方世界依赖别人,想了生死,想成佛道,是不可能的。因为外力仅是方便法门,非究竟法门。所以究竟法门必须要自度自了。


<<<
见了就作,作了便放下,了了有何不了

慧生于觉,觉生于自在,生生本是无生
<<<
"""
''“功德智慧,以修其心”''
《维摩诘经》讲学佛修菩萨道的重心,由这八个字点出来了。修行就是修功德修智慧,也就是修心。

  要怎样修呢?靠''定慧止观'',不是靠打坐,愈打坐愈胡涂的人很多。止是止一切妄念杂想,止于至善,一念在净念上,然后要起观,参究一切的佛,这才是打坐静修的道理,不是在那里玩弄气感!学佛就两条大路,一条修福德,行一切善,去一切恶,只有了功德,才会福德;另一边修智慧。福德圆满、智慧圆满,才能成功。 

''“深入缘起,断诸邪见。”''
佛法讲缘起,一切都是缘起。小乘 <<ref "[1]">> 法门注重十二因缘的缘起,以十二因缘概括了三世因果,三世皆从无明而起。以境界上讲,无明就是起心动念,就是不知道生来死去,睡眠也是无明。在理上讲,宇宙如何开始,第一个人如何生出等等问题,不知答案,也是无明。总而言之,不论是境界上或是道理上,这两种无明都是因为没有修持,没有悟道而有。境界上的无明必须用定力来破除,真得如来大定的人昼夜长明,随时随地都在自性光明定中。但是纵然到了这样的境地,仍然没有解脱。''解脱是靠智慧,但是真正的慧还是要从定而生(慧从定生),没有定的慧是狂慧,或称作干慧。''

小乘讲因缘法都从十二因缘的无明一念而起,但无明又是怎么起的?在《楞严经》中富楼那就拿这个问题替我们问佛,因为佛既然说一切皆空,他问如果一切自性本来是空,为何忽然生出山河大地?也就是问:这世界怎么来的?第一念怎么来的?无明怎么来的?这个问题就是大小乘佛法最基本的问题。所有宗教对这个问题的处理就是挂块「谢绝参观」的牌子,因为到这里问不下去了,教你只要信就好了。但是富楼那一定要问第一念无明怎么来的,佛回答他无明是从明来的,''“觉明为咎”。无明是因觉明为咎而生,一念灵知,觉性常明,久之复生无明。''佛没有再交待,富楼那也不再问了。 

什么是定慧?
怎么修定慧?
既然“缘起性空,性空缘起”,怎么讲缘起?

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "中文小乘一词译自梵语 Hīnayāna,其中 Hīna 是小、低下意思;yāna 意为乘、车子,引申为教法、或通往解脱之道;合起来是“小车子”即“低下教法”的意思。是大乘佛教对于其他佛教宗派的鄙视称呼。小乘的“乘”字在现代标准汉语中读作chéng(音同“成”)。依古音亦读作shèng(音同“剩”)。因为“小乘”包含贬义,1950年召开的世界佛教徒联谊会达成明确共识,无论在西方或东方对南传佛教的正确称呼应当一律使用上座部佛教而非“小乘”。 ">>

接[[昨天|2018年01月09日 周二下午 05:32:52]]:

''定慧'',禅定与智慧。摄乱意为定,观照事理为慧。又名止观。法华经序品曰:「佛子定慧具足。」无量寿经上曰:「如来定慧,究畅无极。」六波罗蜜多经八曰:「佛果大菩萨,定慧为明本。」六祖坛经曰:「师示众云:善知识!我此法门,以定慧为本。」

如果按照[[思考快与慢]]的[[2个系统论|2017年12月26日 下午 09:28:32]]来看,由定入慧的过程就是从系统1--- ---快思考到系统2--- --- 慢思考的转变。从思维科学的角度来解释定慧的法门,也就是怎么修持定慧,似乎更容易一些。

科技就像流感,一波波,而又传染性极高。去你伊始的AI(人工智能)和区块链可谓炙手可热,作为文科出身的互联网工作者不可不补这两方面的知识。另一方面,最近对`科技哲学`十分感兴趣,想深入研究一下,那就先从区块链入手吧。

[[图说区块链]]这本书算科谱性读物,基本上能把问题说明白了。至于图说,图完全是装饰,是噱头(我就是受图解二字的影响才读的),很不厚道。

''[[什么是区块链]]?''
许多年以后,重读加西亚·马尔克斯,我才意识到高中时期所读的《百年孤独》,纯粹是被流行的裹挟和对“百年孤独”名字的高冷的崇拜而一知半解。

上面这句话我借用了加西亚·马尔克斯作品《百年孤独》的开头句式结构:


<<<
许多年之后,面对行刑队,雷奥良诺·布恩地亚上校将回想起,父亲带他去见识冰块的那个遥远的下午。
<<<

此一开头已经成为经典或教科书式的小说开头,许多人趋之若鹜,东施效颦。就连同为诺贝尔文学奖获得者的莫言,也承认受加西亚·马尔克斯写作风格的影响。而我对国外文学的了解,一直停留在概念的程度--- --- 所读不多。这可能是我的性格造成的,对一些文人或者公知动辄皆引用加缪、缪尔·贝克特、尤金·尤涅斯库、胡安·鲁尔弗、略萨、加西亚·马尔克斯、普鲁斯特等现代派文人的名字或者作品的现象的反感,就如一些人说话总夹杂一些英文单词让人反胃,所以对国外文学从来没有系统而深入的阅读。而私下总有按捺不住想阅读的冲动。
民国时期是大师辈出的时代。不知是时代成就了大师,还是大师创造了时代,这种时代不常有,大师亦不常有。而王国维之于民国大师,可谓大师中的大师。

王国维生在清末,逝在民国,精通国学 --- --- 中国古典美学和古代文学的集大成者,又深谙西学 --- --- 精通英文、德文、日文,在那个继往开来的时代,王国维自然就成了新旧学的桥梁,对旧学的继承和改造,对新学的开拓和创立,被誉为“中国近三百年来学术的结束人,最近八十年来学术的开创者”,近代中国最后一位美学和文学思想家。

王国维的这本“大家小书”--《一个人的书房》,是其学术随笔,分述、讲、品、写、作和抒,小文章大思想,涵盖范围很广,从秦哲学讲到西方哲学,从王国维的诗词到教学心得,包括其读书体会和闲情逸趣小品。
这本书的作者是《[[如何阅读一本书]]》中文版的引进者,也是翻译者之一,应该是一个出版人。这也是想翻阅此书的主要原因。但速览了此书后,大失所望。言语啰嗦,思维混乱,所提倡的阅读法并无多少价值。
祝贺各位读友:新年快乐!狗年行大运!

《小游仙》(曹唐)


<<<
冰屋朱扉晓未开,谁将金策扣琼台?
碧花红尾小仙犬,闲吠五云嗔客来。
<<<
4. ''陈家琪''  同济大学人文学院哲学系教授

''研究领域:''现代西方哲学

''推荐书目:''

# 《法哲学原理》,[德]黑格尔著,范扬、张企泰译,商务印书馆,1961[1979]
#《回忆录:1848年法国革命》,[法]托克维尔著,周炽湛、曾晓阳译,上海人民,2005(《托克维尔回忆录》,董果良译,商务印书馆,2004)
#《旧制度与大革命》,[法]托克维尔著,冯棠译,商务印书馆,1992
#《中国历代政治得失》,钱穆著,北京三联,2002

''推荐理由:''

专业和职业所需反复研读。《回忆录》就不多说了,仅就那种把理论思索转变为一种叙事结构的体裁就足以使人陶醉;这是一种我心仪已久、并多次试验的方式。《中国历代政治得失》里面有些非常精彩的论述,这种精彩不在历数中国历代政治变迁的过程,而在历数中所透露出的那种悲凉与无奈。

5. ''陈克艰 ''上海社会科学院图书馆文献整理部研究员

''研究方向:''科学哲学、科学知识社会学、佛学、当代新儒学

''推荐书目:''

#《数学方法趣引》,孙泽瀛著,中国科学图书仪器公司,1953
#《从杨辉三角谈起》,华罗庚著,人民教育出版社,1964
#《从祖冲之的圆周率谈起》,华罗庚著,中国青年出版社,1962
#《从孙子的“神奇妙算”谈起》,华罗庚著,人民教育出版社,1964
#《数学归纳法》,华罗庚著,上海教育出版社,1963
#《自然辩证法》,[德]恩格斯著,中央编译局译,人民出版社,1971
#《红楼梦》,曹雪芹、高鄂著,人民文学出版社,1982
#《堂吉诃德》,[西]塞万提斯著,杨绛译,人民文学出版社,1978
#《科学发现的逻辑》,[英]卡尔·波普尔著,查汝强、邱仁宗译,科学出版社,1986
#《新唯识论》,熊十力著,中华书局,1985
#《新教伦理与资本主义精神》,[德]韦伯著,康乐、简惠美译,广西师大出版社,2007
#《柳如是别传》,陈寅恪著,上海古籍出版社,1980

数学书籍启发数学兴趣;《柳如是别传》一书,堪称“科学的史学”之典范。

//2018年02月17日周六下午09:37:02//

6. ''陈乐民''  中国社会科学院欧洲所研究员

''研究方向:''国际政治、欧洲史、中西文化交流史

''推荐书目:''

# 《徐光启集》,王重民辑校,上海古籍出版社,1984
#《徐光启年谱》,梁家勉著,上海古籍出版社,1981
#《阿Q正传》,鲁迅著,人民文学出版社,1976
#《中国哲学史》(两卷本),冯友兰著,华东师大出版社,2000
# 《中国哲学史新编》,冯友兰著,人民出版社,1982-1989
#《顾准文集》,顾准著,贵州人民出版社,1994
#《哲学通信》,[法]伏尔泰著,高达观等译,上海人民出版社,1961
#《历史理性批判文集》,[德]康德著,何兆武译,商务印书馆,1990
#《历史哲学》,[德]黑格尔著,王造时译,三联书店,1956
#《共产党宣言》,[德]马克思、恩格斯著,中央编译局译,人民出版社,1963
#《论美国的民主》,[法]托克维尔著,董果良译,商务印书馆,1988

''推荐理由:''

《徐光启集》,徐是有明一代具有开放和开明眼光的“奇材”,是中西文化交流史中的开篇人物;坊间同类哲学思想史的书不少,但个人管见,都绕不过冯著二种(《中国哲学史》);李慎之对我说:“今天有没有思想家?”接着自答:“有的,那就是顾准!”;

7. ''陈尚君'' 复旦大学中文系教授

''研究方向:''古代文学

''推荐书目:''

#《全唐诗》,王全整理,中华书局,1960
#《全唐文》,中华书局,1983
#《唐五代人物传记资料综合索引》,傅璇琮等编,中华书局,1982
#《资治通鉴》,司马光编撰,中华书局,1976

8. ''陈严'' 法国政治与思想史研究中心客座研究员

''研究方向'':当代中国思想史

''推荐书目:''

#《国家与革命》,[俄]列宁著,中央编译局译,人民出版社,1964
#《资本主义与二十一世纪》,[美]黄仁宇著,三联书店,1997
#《菲利普二世时代的地中海和地中海世界》,[法]布罗代尔著,唐家龙等译,商务印书馆,1996
#《15至18世纪的物质文明、经济与资本主义》,[法]布罗代尔著,顾良等译,三联书店,1993
#《论美国的民主》,[法]托克维尔著,董果良译,商务印书馆,1988
#《旧制度与大革命》,[法]托克维尔著,冯棠译,商务印书馆,1992

9. ''程念祺'' 上海社会科学院历史研究所副研究员

''推荐书目:''

#《史记》,中华书局标点本,1959
#《传习录》,载在《王阳明全集》(商务印书馆国学基本丛书1936年排印本)
#《历史是什么?》,[英]爱德华·霍列特·卡尔著,吴柱存译,商务印书馆,1981

''推荐理由:''

《历史是什么?》是我学习历史的入门书。

10. ''党国英'' 中国社会科学院农村发展所研究员

''研究方向:''农业经济学、农村制度变迁

#《百年思索》,龙应台著,南海出版公司,2001
#《国富论》,[英]亚当·斯密著,杨敬年译,陕西人民出版社,2001
#《经济学》,[美]萨缪尔森、诺德豪斯著,萧琛主译,人民邮电出版社,2008
#《新教伦理与资本主义精神》,[德]韦伯著,康乐、简惠美译,广西师大出版社,2007
#《资本主义论丛》,[法]布罗代尔著,顾良、张慧君译,中央编译出版社,1997
#《变化社会中的政治秩序》,[美]亨廷顿著,王冠华等译,北京三联,1989
#《农民、政治与革命:第三世界政治与社会变革的压力》,[美]米格代尔著,李玉琪、袁宁译,中央编译出版社,1996
#《民主的模式》,[英]戴维·赫尔德著,中央编译出版社,1998
#《当代经济学与中国经济》,杨小凯著,中国社会科学出版社,1997
#《平等与效率》,[美]阿瑟·奥肯著,王奔洲等译,华夏出版社,1987
#《个人主义》,[英]史蒂文·卢克斯著,阎克文译,江苏人民出版社,2001

2018年02月19日周一下午11:00:47
《[[一个人的书房]]》是一本需要反复阅读的书,尤其是书中第一部分:

<<<
第一编 述:诸子学说
老子之学说
孔子之学说
墨子之学说
列子之学说
孟子之学说
荀子之学说
周秦诸子之名学
<<<

以王国维的国学高度,加之西学认识,后世人只能望其项背,所以王对先秦哲学诸子学说的分析,能钩沉索隐,穷搜经典,发覆探幽,直至开聋启聩,可谓经典,后世之人不能再有超越。
[[整理了十几个人推荐书目之后|我书架上的神明]],我准备放弃了。原因有三,一是书中大部分人所荐书目是大部分读者一辈子都不会读的专业书籍;二是,荐书人研究领域过于集中------大多集中在区域经济和思想史领域,”好书“过于偏科;三是荐书人拘于时代闲置,所谓的好书有其时代的偶然性价值,在当下并不一定合适推荐给大家。除此之外,这七十多位知识分子,样本单一 --- --- 大多从文革或上山下乡时代走过来的,不具有读书的多样性,但从中看到了这些人身上泛着治学严谨和对读书强烈渴望的可贵之光,而且几乎每个人所荐书目中都有一两部厚重历史著作,或史记、或论语、或资治通鉴等。

不过一路读下来,这些著作等身的人读书经历和读书故事中不乏金玉良言:


<<<
纳博科夫认为,要做一个优秀读者,并不是一定要参加一个读书会,或者与书中主人公认同,或者是自己也写东西,而是:1. 须有想象力。2. 须有记性。3. 手头应有一本字典。4. 须有一定的艺术感。
<<<

<<<
喜欢什么书或什么歌,往往和你在什么时候第一次读和听有关系。
<<<

<<<
后来读到韦伯的《民族国家与经济政策》,才知道德国人已经吃过了类似的苦果。对我而言,读这本书最大的收获在于,我学会了一种阅读的方法,或者更准确地说,是一种态度:虔敬,但不屈服。在阅读之前,尽可能地放弃一切已有的成见,紧紧跟随作者的眼睛,并且,努力站在作者的高度去思考,进入他的世界,面对他的问题。
<<<

<<<
如果我们真的热爱读书,那么我们就应当像对待朋友那样选择书、对待书:“友直、友谅、友多闻”,轻浮或者迷信都会损害友谊。或许这是我的读书生活给我最重要的启示。
<<<

<<<
一个人不经历过一些偏激,不做一回“愤青”,无法真正地回归中庸。
<<<

《历史学的理论和实际》 贝奈戴托·克罗齐(Benedetto Croce)的这本书分为“史学理论”和“史学史”两大部分,“史学理论”是本书的精华。在这部分内容里,他提出了“一切真历史都是当代史”的命题,指出认识论上的历史是“活”的历史,是“一种思想活动”,并且与历史解读者所处的现实生活密不可分。通俗地讲,对过去发生的历史的解读或认识不是一成不变的,它会随着时代的变迁而改变;真正的历史认识是现实与历史的联结,一旦脱离现实生活或者因为时代的改变,它便会变成“死”的历史。他从认识论上和价值论上,否定了以兰克学派为代表的客观主义或实证主义史学方法,通过对史料进行不夹杂主观情感的编排即通过“编年史”形式重现过去的历史;这种历史则是死历史和伪历史,毫无意义。尽管克罗齐的这种观点陷入了相对主义,但是他为人们理解历史开拓了一条新思路。
[[接上|2018年02月23日周五下午03:44:47]],继续把[[我书架上的神明]]中的一些亮点摘抄出来:


<<<
少年时期的理想主义的破碎让我对政治无所适从,既视之为应该远离的、往往与邪恶为伍的权力斗争,但又感到它是一种我无法避开也无法掌握的力量。

当下大多数人对政治的理解基本限于这样一种无意识的暧昧:或者追逐权力以获取自己的利益,或者在对权力的顺从中接受体制的塑造,或者远离政治而专注于私人生活。这三者往往互为表里,使人们不自觉地成为他们无法掌握的政治的产品。

在现代社会中,必须通过公共性的政治生活克服个体的自私和虚弱,战胜僭主和寡头的暴力和贪欲,实现自由、德性乃至伟大。

在托克维尔那里,宗教对于个体和公民灵魂的提升和净化,具有深刻的政治意义,在他看来,宗教精神和自由精神的结合,是现代政治的成功之道。

从哲学家和知识分子的心魔爱欲去理解这些人的政治狂热和盲目——政治对于他们来说不过是其心魔爱欲的工具,仍然是颇有启发的解释,并且也是对很多自负为哲人和知识分子的人的警醒

“月冷笼沙,星垂大荒。一个自由人,在追赶监狱”。

科学研究发现“我们将其作为‘现在’、‘感觉到的’现在实际经历的时间跨度大约仅为五十分之一秒长”。(Ernst Breisach, Historiography: ancient, medieval & modern, Chicago,1994,2nd ed, p. 2)所以,当你意识到现在是“现在”的时候,它已经变成了过去,而你却正生活在未来。

两句古书上的话,一句是《中庸》上的,“诚之者,择善而固执之者也”;另一句是《荀子》上的,“不以所已藏害所将受”。

<<<
春节之后所读之书一直在民国的窠臼里跳不出来(见[[2018读书目录]]),虽然每天有诸多作古大师为伴,然这些大家的清欲和素朴,好古和怀远,让我少了一些激情和欲望。这盘菜实在太素了  <<footnote "❶"英子在[[雅记清词写流韵]]上说:“色调上我偏嗜了素淡的一面,因为那是能够润饰人底深远幽邈的情绪以忧郁的冥思的”。">>,虽然之前一直探究这种[[素心素地素文的大情怀|素心素地素文方是大文章]],然萝卜青菜固然可爱,而能量和营养总要跟得上来,大荤也还是要有得。这就像[[年前做得读书计划|Laws of reading]],各个学科都要照顾到,如今嗜口而偏食了。

很早之前做过一个[[艺术与历史专题|Wechat]],美轮美奂的艺术可以训练审美和养眼,艺术背后的故事和大历史背景又开始还原现场,可惜暌违而汗颜,成了半拉子工程,希望接下来的换口味的间隙可以重续前篇,顺利转场。

此外,[[思维框架构建和认知科学|Thought Framework]]的探索也在年后原地打转,无甚进展。如果夏季再无进展,则如逆水行舟。存照,厉行!

再者,还有科技哲学这个靶子,枪一直在端着,瞄来瞄去,一枪未放,空放一腔热情。

在这三个领域希望接下来能花更多时间,以便荤素搭配。
温源宁在[[雅记清词写流韵]]上记周作人的一篇小文(《周作人:铁与温雅》),写的真是好,自然、传神、有趣,把周作人现场还原的活灵活现。


<<<
周先生的住宅远在北平繁华中心之外,因此过访者不甚踊跃,然而真的过访的几个人,主人总是欢迎的:他们不是老朋友,就是常来找他想在写作上得一点特殊指示,或只是随意谈谈的几个热诚的景仰者。''十有八回,开口的是客人,听着的是周先生。话是用幽幽然的调子说着。没有议论,所以就没有雄辩。话头左一弯右一弯,说到这说到那——只是软软的撩一下,便荡开去落在别的上:任什么也不许独占春光,以至于变成争论的对象。热情是没有地位的,所有的只是对于一切事物的清明无私的好奇的烛照。''
<<<

<<<
大凡在学问中讨生活的人,对于让外人参观自己的书房这件事,大都心存忌讳。他们视自己的秘密书架,好比金屋里藏的阿娇,或者贪官的银行户头,不到万不得已,那是绝不愿意轻易示人的。---《读书》前执行主编王焱
<<<

读书是很私人的事情。也正是很其私密性,我对别人的读书有很强的“偷窥欲”。长长的读书清单中,我专门建立了一个别类:书的书。窥探他人读书除了好奇心外,也是寻猎好书的一种途径,了解别人的读书之法([[Laws of reading]])和读书故事。

《[[私人阅读史]]》这本书是从梁文道的《[[我读]]》中获悉。

先说一下梁文道的《[[我读]]》。梁文道应该算是专业的读书人,但他又不是学者,是以读书为职业的人。我不知道读书对他来说是否是一件痛苦的事情 --- 应该不会。因为一旦把读书变成了职业,这种行为就失去了诸多乐趣,就像上学时期的读书,我想没有几个人那时候是酷爱吧。对梁文道本人我是熟之又熟,和他本人在五道口万圣书店见过两次,一起在书店楼下抽了会烟就离开了。而对他的节目我是每期必看 --- 最喜欢的还是他和老窦以及许子东的座谈节目《锵锵三人行》。据说梁文道读书神速,一晚能看完一本书。如果没有猜错,我想梁文道的读书法正是《[[如何阅读一本书]]》里的第二、三种阅读法:检视阅读和分析阅读。除此之外,世界上还有什么其它的快速阅读法吗?当然,经过阅读训练的人,看书的速度 --- 用《[[阅读心理学]]》上的专有名词叫眼跳速度和跳读 --- 是可以提高的,一目十行也不是不可能。

《[[我读]]》这本书其实就是梁文道在凤凰卫视上的节目《开卷八分钟》的文字版,简单进行了筛选和加工。我也是拿这本书当工具书用 --- 查询一本书的大概信息和感概。

再说《[[私人阅读史]]》。

《[[私人阅读史]]》和之前读的《[[我书架上的神明]]》很像,前者锁定的时间段更考前一点 --- 从1978年到2008年,对象年龄大都为六零后之前;而后者更当代一点,包括80后的阅读经历。

读书,我好像很难戒掉猴子掰棒子的毛病 --- 一本没看完就急不可耐的翻开另一本。在 <<tag Task>>和 <<tag 正读>>、<<tag 想读>>标签中已经开始“负债累累”。

不过我为这次掰下的棒子欣喜 --- 《民国清流》系列是有关民国书籍的上乘之作 <<ref [1]">>。

作者以编年体作为全书布局,从1917年开始,每一年为一个单元逐一写下来。每一单元又以某一个人物切入,顺藤摸瓜,一串串扯出来。

就说第一单元 --- 1917年 --- 吧。 第一出场人物为蔡元培,从其入驻北大开始,接着《新青年》编辑陈独秀登场,假陈之手又对胡适伸出橄榄枝。陈、胡接受北大之邀,揭开了整书大幕,也是暮气沉沉的北大逐渐成为新文化运动的精神高地。李大钊、钱玄同、刘半农、周氏兄弟等一代新型知识精英,也开始一一登上历史舞台。旧式文人也没有被沉寂,章太炎、辜鸿铭等大儒一样不吝笔墨。

《民国清流》另一特色是作者以小说笔法重整史事。作者把相关人物和重要节点都以小说手法还原历史现场,并辅以文学色彩的渲染和铺垫,从而使生硬的历史事件和人物关系变得生动了起来。这也是这套书之所以好看的重要原因之一。不过话说回来,以这种写法见长的当属台湾高阳,高阳所写的清代历史小说后世无人能够超越 (见 <$appear>

<$list filter="[field:author[高阳]]+[!sort[created]]">.

<$link><$view field="book_title"/></$link>  

<$transclude/>

  </$list>

</$appear>此)。汪兆骞对历史事件的处理和衔接过于生硬,文学铺陈痕迹过于明显而至有做作之嫌。

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "汪兆骞著有经典史诗级民国大师集体传记“民国清流”系列  ,已出版  《民国清流:那些远去的大师们》、  《民国清流2:大师们的“战国”时代》、 《民国清流3:大师们的中兴时代》、《民国清流4:大师们的抗战时代》、《文坛亦江湖:大师们的相重与相轻》、《走出晚清:大师们的涅槃时代》、《往事流光》、《春明门内客》、《紫塞烟云》、《张骞》等。 ">>
<<<
对现实的不满,不会希冀未知的将来,而更多的是对过往的追忆。 --- 三家村
<<<

也许这就是“民国热”的内在原因。民国,是一个物质匮乏,社会动荡不安,民不聊生的时期。而人们热衷的是这个短暂而又响亮历史阶段的独有特质 --- 时代变革催生的文化裂变、国际局势激发的国家图存探索、军阀混战造就的正义与邪恶的较量。这种撕裂感的历史特质的独特魅力核心就是灿若星河的大师们。

[[那些远去的大师们|民国清流:那些远去的大师们]]人遂去,而茶未凉。当身处黑暗之中时,还能看到一些人在遥望他们,星星点点的灯火依然可以引导迷茫着。

先说蔡元培。

如果蔡元培看到今天北大之现状,估计要揭棺诈尸,魂不能安。蔡元培接下北大时,北大是一个前清留下的烂摊子:

<<<
北京大学在动荡的政局下,一片乌烟瘴气,名声狼藉。教师中不少人靠印发旧讲义,糊弄学生。学生中有不少人整天吃花酒、捧戏子、打麻将,不上课,不读书,混日子。北京大学所处的马神庙、沙滩一带,成了市井闹肆、酒楼,暗娼招摇过市,与文化圣地形成绝妙的讽刺。
<<<

经过蔡励精图治,在“兼容并包”的办学宗旨的大旗下,延揽了陈独秀、胡适、钱玄同、章太炎、黄侃、辜鸿铭、章士钊等清流名士,北大方成为一片圣土。特别是在胡适和陈独秀两个勇士的推动下,北大成为中国新文化运动的诞生地和新思潮的前沿阵地,直接导致五四运动的轰然炸响。

如今,北大的这些清誉尚存几何那?




再说胡适。

<<<
胡适在家乡受九年私塾教育,1904年到上海求学,两年后考入中国公学。1908年转入中国新公学,兼英文教员。19岁考取留美官费生,就读于康奈尔大学农学院。后又转入文学院读哲学、经济、文学诸课程,1914年获文学学士,9月发起创立“中国科学社”。次年,入哥伦比亚大学研究院,师从美国哲学家杜威,学习哲学。
<<<

<<imageSlider  [[https://i.loli.net/2018/06/07/5b180fcb51d15.jpg]]    "胡适 1960">>

胡适与鲁迅,是中国现代思想史和文学史上并峙的双峰。胡适入职北大,成为北大第一位洋博士。在胡回国之前,就在海外提出“一个国家有海陆空,不如有大学”的主张,这让蔡校长赞叹不已,事实上也成为新北大一面鲜明的旗帜,与陈独秀联手发起白话文运动,并继而推进新文化运动。正是上个世纪早期这场轰轰烈烈的运动,才引起思想各种思想的撞击和讨论,催生催生了五四爱国学生运动。那些从黑暗中突围出来的知识分子,才如泉涌般集体亮相,以启蒙者和革命家的胆魄,继续奋力开启新时代的闸门,一路高歌猛进,为20世纪的中国历史谱写了新的序言。

“胡适大名垂宇宙,小脚太太亦随之”,胡适的婚姻被列为民国史上七大奇事之一。一个提倡新生活倡导新文化的玉树临风洋博士和一个大门不出二门不迈的裹脚妇女(江冬秀)结合,确实悬殊太大。可这位谦谦君子之风的新儒派代表人物却是一位至纯至孝的孝子,为了母亲不得不迁就个人生活。1918年5月,新婚五月的胡适在写给挚友胡近仁的信中说:

<<<
我之就此婚事,全为吾母起见,故从不曾挑剔为难。(吾不为此,吾决不就此婚,此意但可为足下道,不足为外人言也。)今既婚矣,吾力求迁就,以博吾母欢心。吾之所以极力表示闺房之爱者,亦正欲令吾母欢喜耳。
<<<

并峙双峰的另一峰之鲁迅可就没有胡适从一而终了。鲁迅奉母与朱安成婚,后来一贯贯彻个性主义的鲁迅个性解放了,与许广平自由恋爱,但朱安呢?个性解放与人道主义的矛盾,造成了朱安这个可怜女人的悲剧。这个阴影也一直笼罩着周树人。

胡适对近现代中国的影响力勿用赘述。但与之有颇深渊源的一人不得不提,那就是新中国的缔造者,毛泽东。
!'“40后”流行的是:
苏联文学为主、《安娜卡列尼娜》、《高老头》、《悲惨世界》

!'“50后”、“60后”流行的是:
卢梭的《忏悔录》、巴金《随想录》、张洁的《爱,是不能忘记的》、王蒙的小说、劳伦斯《卡恰泰莱夫人的情人》、《光荣与梦想》、《一九八四》、《第三次了浪潮》、伤痕文学系列、寻根文学、西方现代思潮、李泽厚《美的历程》、黑格尔《美学》、《顾准文集》、四书五经系列、汤恩比《历史研究》、弗洛伊德、加缪、《傅雷家书》、房龙《宽容》、《围城》、杨绛《洗澡》

!“70后”流行的是:
金庸、卡尔维诺、博尔赫斯、三毛、卡夫卡《城堡》、马尔克斯《百年孤独》、王安忆、余华、莫言、阎连科、陈忠实、贾平凹、严歌苓、吴思、王小波、西方现代思潮、黄仁宇《万历十五年》、蔡志忠、余秋雨《文化苦旅》、

!“80后”流行的是:
村上春树、网络小说(南派三叔等)、《三体》

!“90后”流行的是:

!“00后”流行的是:


''1978-1988年是一个完整的年代。''


<<<
1997年是一个截然的分水岭,它把30年中国阅读史划为两段。中国到了1997年,才开始真正天覆地地告别传统社会。1994年、1995年的“人文精神大讨论”,我把它称作“春江水暖鸭先知”。知识分子已经敏感地感受到一个新时代即将到来,这个新时代就是彻底的商品经济——所有价值被重估,标准只剩一个:金钱,理想主义崩溃,是非观念开始丧失。
<<<


1988-2008年却是一个无法被完整描述的年代。

<<<
纵观中国30年阅读史,却没有一条一贯不变的价值取向“金线”贯穿其中,从雷锋到郭敬明,从李谷一到李宇春,时代偶像的变化找不到一丝共同之处,这其实才是最大的问题。
<<<
《我在现场:性社会学田野调查笔记》这个书名包含了几个有意思的信息:性+社会学+田野调查+笔记。性,人类繁衍的原始活动;社会学,研究人类行为和人类群体;但性+社会学(sociology of sex)就是很有意思的一个词,研究的方向应该是性与社会性的交叉范畴。而本书的内容主要是性从业者和中国“红灯区”。田野调查,是人文社会科学领域围绕研究对象而进行的田间野外实地调查活动,也即在文化人类学等学科方法论中所称的“直接观察法”。笔记,是本书的写书叙事风格。书名的“我在现场”,我想是出版社的商业噱头行为,和田野调查是一个意思。

一直以来对纪实性文学、人文社科研究报告很感兴趣,之前看的《[[东北游记]] 》、《[[一个村庄里的中国]]》都属于这个范围。我在[[第三只眼睛看东北]]提到过当今社会这种文体读物的价值和难得所在:见此 <$appear type="popup">

看纪实文学就像看纪录片,是一种现实性体验,和纯文学的区别就是非想象和虚构以及无论美丑但真实的魅力。中国好纪录片少之又少,现存的纪录片不是捧臭脚,就是跪舔式的阿谀;不是洗脑式的价值灌输,就是意淫式的自我高潮。真正好的纪录片是一个真实的过程,记录、信息传递和人性启蒙。同样,中国纪实文学作品也同纪录片一样的现状。事实上中国是最不缺少现实题材的土壤,网友神侃为这是一片神奇的国度,远且不说,就改革开发四十年,经济的飞跃带来的阶级分化、社会价值观的滞后带来的国际和国内问题、被经济撕裂的信仰带来的人性痛苦和社会问题、互联网浪潮下的社会道德底线和政府作为、逐渐分层的社会造成的不同族群的个性化和主流价值观的冲突........这些不都是绝佳的现实题材和魔化题材吗?奈何无人来做!

</$appear> 。此书2017年出版,尚有一定的时代价值。

本书难能可贵之处有二。

一是作者们把自己丢在“现场”,并“自甘堕落”融入“现场”。第一篇文章的作者,人大教授潘绥铭,在白发苍苍的年纪驻守东莞红灯区夜总会里面四十多天;第二篇文章作者黄盈盈 ,人大性社会学研究所所长,还是个未毕业的女孩子的时期就深入广东发廊,与性工作“战斗”在第一线。二是作者的研究态度,降维沟通。我们一般人在面对性工作者时候除了好奇之外,我想绝大多数人都有一定的道德优越性,甚至不自觉的进行道德绑架。而这些“走入田野”的人,能够自我降维,拒绝道德绑架,我想这不是一般人能够做的到的。就像潘绥铭所说:

<<<
究竟是因为“性”本来就坏,还是为了装高尚才把它说得那么坏?再说了,如果性不那么坏,钱也不那么坏,那为什么两个连在一起就变坏了呢?别跟我说什么道德,您那个道德经过全民公决吗?怎么就能强迫别人遵守呢?
<<<


我想,这就是这本书的价值。除了满足些许的偷窥欲之外,使人能够做到降维思维,深入事务的本质看问题。
<<<
社会科学的本质,就是要从人人可见的表象中去发掘那些平时被大家所忽视的东西。
<<<


我本想从《我在现场》中企图了解改革开放40年来人们性观念的演变、性工作者现状以及中国“红灯区”的变革,可惜本书并没有给出什么结论和参考,而只是这拨人工作手记而已。我想他们也没有什么研究成果吧!不过本书有趣的一点是,一群头顶教授、博士、最次也是研究生头衔的知识分子,企图去亲密接触、融入一拨没知识没文化的“社会底层的边沿人”,并努力去取得对方信任和打开心扉。这样的社会科学调查本身就是非常好的一个社会科学现象,两个社会阶层(甚至可以用阶级这个词来描述)高低悬殊巨大,是什么让这两拨人在哪个点交汇和共鸣?这本身可能也是一个社会科学课题:阶级分化和共鸣。

虽然本书故事性强于学术性,有点玩弄噱头糊弄读者的嫌疑。但个中还是有些许闪光点:

<<<
眼睛里看得见角落,心里才会有全局。
<<<

<<<
性行为并不都是按照男女性别来划分的,也可以按照快乐不快乐来划分。
<<<

<<<
社会科学研究最大的魅力在于,研究者可以投入自己的真情实感去探索社会问题,并且在探索中发现、体验和发展自己的内心世界与情感能力。
<<<
经常见许晖在twitter上安利他的系列作品 --- 解字、解词系列书籍。因为这两年一直在闲看《[[说文解字]]》,今天也大致翻了翻他的《这个字原来是这个意思1.2》。

说实话,写像《这个字原来是这个意思1.2》这类书是一个苦力活,需要参考很多古代文献资料,要不然根本无法对一个字、词的演变、释疑以及各方见解说明白。文字学在小学范畴,明清比较流行,出了不少大专家和专著。近现代,特别是民国新文化运动提倡白话、新中国汉字化繁为简之后,文字学再无什么人搞出什么明堂了。

我提倡人们多看一些“说文解字”,这是汉语的元件,不仅是学习古汉语必备的知识储备,也是学好汉语的基础。如果有些文言文基础的话,最好还是看元典,如《[[说文解字]]》等。像许晖的“说文解字”系列也可以翻一翻,聊胜于无吧,不过无甚新意。

看《[[说文解字]]》这种书很枯燥,需要慢慢来,想起来了就翻一翻,遇到感兴趣的字就记下来,钩沉索隐,日积月累,集腋成裘。除了看这种“说文解字”专著,还有一种学习办法也很管用,那就是凡是遇到一个生僻的或者感兴趣的字,就翻一翻字典,搞清楚这个字的来龙去脉,然后记下来。 在这里我推荐几个工具,很有用:

* 在线字典:[[汉典|http://www.zdic.net/]]
* Chrome浏览器插件:[[Papier|https://chrome.google.com/webstore/detail/hhjeaokafplhjoogdemakihhdhffacia]]  ,把字的解释都放在Papier上,这样每次打开chrome就可以看到。

除此之外,我还用了[[OneNote|http://office.com]]和Kindle。把所有在kindle上遇到的生字词都汇集到Onenote,然后每天在[[汉典|http://www.zdic.net/]]上查一个,然后在Onenote上把它删除,并把释疑贴在[[Papier|https://chrome.google.com/webstore/detail/hhjeaokafplhjoogdemakihhdhffacia]] 上。每天一个,记不住也没关系,下次遇到您继续查,继续贴出来,一定会记住的。

同理,这个办法记英语单词也是可行的。
今天在读库上看到这样一段描述:

<<<
 60年代可以说是美国历史上最重要的十年,在这十年里,美国举行过从抗议种族歧视到反对越南战争的数次华盛顿大游行;发生了数不清的暗杀和暴力事件;出现了头戴鲜花的嬉皮士和善于制造事端的异皮士;流行过从大麻到LSD再到海洛因的各类毒品,并从中诞生了身穿长袍的迷幻宗师和走入歧途的谋杀犯。这一切都发生得那么迅速,以致于民歌手克罗斯比曾经用下面这句看似错误的话来形容那个年代: 你如果还记得六十年代发生过什么 那你就根本没有在那个年代生活过 这被许多从60年代过来的“老兵”们称为是描述那个年代的最贴切的一句话。而伍德斯托克音乐节,则是美国音乐史上最兴盛的60年代的最后一次高潮。
<<<

之所以存照,是企图在[[中国百年思潮迭代和探究]]中找到一段可以对应的年代,虽然方式可能不同,但表象之下的思潮和逻辑相似即可。还没有探究,马上想到的是80年代,可能唯有这段时间由此机会。
这些年养成了一个毛病:[[囤书|https://rizi.me/#BookStore:BookStore]]。虽然大部分标注“要读”的书都逐渐被我消化掉了,但遇到好书、有趣的书、符合个人趣味的书还是忍不住囤起来。说好听点,是为了建立自己的数字资源知识库,其实就是爱书的瘾犯了,目前互联网上最不缺的就是电子图书资源;说不好听点,这是贪!这个毛病一直改变不了,一本书还没有进入尾声,遇到零一本好书,又急不可耐的读了起来。该治!

读书应该有个计划。我下了(见 <$appear type="popup">{{Laws of reading}}</$appear> )不少功夫。可执行结果并不理想,仍然是随意而为。看一些大师的读书史,许多人说随意而读即为真正的读书,带有某种目的和功利性读书非真正的读书。这话我赞成一半,即读书不要太功利性。不赞成的一半是,我认为读书要有计划性,为什么这么说?“吾生也有涯,而知也无涯。以有涯随无涯,殆已!”把有限的时间有计划性的去读好书(是好书,而非有用的书),去读经典大作。因为每年都有海量的书籍问世,而这海量书籍中真正可读、能读、值得读的可能并不多,细分每个学科或领域,经典的书籍也不多。那么为什么还要把时间浪费在读那些浑浑噩噩的书那?

除此之外,读的书越多,除了感觉到自己的无知之外,越来越感觉到自己的无趣。无趣,指的是有趣的灵魂。生活中遇到一个具有有趣灵魂的人弥足珍贵,堪称万里挑一。有趣,不仅指的是亦正亦邪的嗜好和耽爱,更重要的是对世界具有独特的见解,以及近乎成魔成佛或大智若愚的行事风格。做到这一点太难了,用释家的话说,这需要顿悟,需要一道灵光,需要一语棒喝,从而忘我。用儒家的话说,这需要学富五车,从而厚积而薄发。而从认知科学上来看,这需要突破自我的认知瓶颈,用上帝视角的思维俯瞰世界。

可这到光在哪?
习惯了在电影上映前速览一下电影原著。看原著比看电影多了好几个维度,整个故事会更立体饱满。电影用侵略性的视觉语言强加于认知,而读书用主动性思维幻想一个场景和主人公,二者的结果其实是蛮大的。就像之前读完《[[芳华]]》,就不再想看电影版本了。

《[[侠隐]]》是发生在民国末年 --- 西安事变前后那段时期北平的一个复仇故事。整本书的故事很简单,围绕主人公 --- 李天然复仇展开;人物关系很简单,李天然和李天然熟识的几个人;故事背景很简单,虽然那段时期中国处在内忧外患的复杂历史阶段,但作者并没有想写成历史小说,所以故事背景一带而过。而小说简单中的复杂是故事发生的地点,民国时期的的北京,如果对北京不熟悉,是搞不懂小说中的地理,从一个胡同到另外一个胡同。与胡同呼应的是胡同里的生活,老北京的生活,准确的说是老北京胡同里四合院的生活,“天棚,鱼缸,石榴树;先生肥狗胖丫头”。这一点对于北京土著来说是迷人的,是怀旧。可能这才是作者张北海写这部小说真正想抒发的感情,作者十几岁离开北平(1949)到台湾,后移民美国,六十岁退休后才开始写作。老年写作,难免古国怀旧,午夜梦回。据说(电影还没有看)电影《邪不压正》恰恰是抽离了老北京生活这部分,单独把故事领了出来。我不知道作为北京土著的姜文导员为什么这么做,但我想,如果真正他这么做了,未必能拍得出那种味道来,他的风格不合适这种题材。

也许与作者老年写作有关,整本书的叙事风格如文火慢炖,把一个复仇故事写的如游记或回忆录,把武林江湖月黑风高杀人越货写的看不出任何刀光血影,甚至你还能从中嗅出咖啡、威士忌、雪茄和豆汁、葱油饼、羊肉包子的浪漫主义味道。
看 《不失者》,就像进错了门,不经意发现了别样天地。 因为我原本不会对这种题材 --- 科幻或者非现实题材 ---感兴趣,也对这种看似网络小说的作品由衷的排斥,我甚至有点神经质的拒绝看近三十年出的书。但一脚踹开《不失者》的门,在不经意翻一翻的过程中,先是被作者的文采所吸引,后是被作者狂放的想象力所瞩目,再就是为作者富有哲学意味的大段描述所赞叹。

 《不失者》文字的精彩部分在作者对比喻的运用,虽然整个故事的结构有点紊乱,章节的编排并不合理,但是不影响对整个故事的了解情况下,您会享受作者一个一个比喻的运用。对比喻手法的运用是一门高超的技术,不是谁都可以信手拈来,恰如其分的。

故事的想象力和结构,也是本书的一个特点。虽然想象力并不很出色,但是和故事一环一环的套起来的结构结合起来,就使故事具有很大的悬念和趣味性。可惜的是整个故事格局还是太小,如果有一个宏大的结构和立意,以作者的文采足可以媲美《三体》。

整本书最后一部分 --- 关于迷宫哲学 --- 十分精彩,虽然与整个故事有点剥离感,但依然不失其迷人之处。


看完整本书,我查了一下作者孔亚雷的资料,百度百科上这样写的:

<<<
中国的村上春树,一部堪与《寻羊冒险记》和《奇鸟行状录》相媲美的奇妙小说。孔亚雷的这部长篇小说令人想到《世界尽头与冷酷仙境》等更具村上春树文学本质的作品,并在很大程度上达到了形神兼备的境地。而这一境地,便不是简单的技术性模仿所使然,而须以精神的谐调、心灵的契合为前提,同时更需要波涌浪翻的文学才情。套用一句老话,他可以说颇得村上文学的“真传”。
<<<

可惜作者的作品太少。或许作者后来放弃写作了吧。
每一次生病都是一次生命的净化。

这话用我身上显得有点矫情。这几天我这也不算什么病,只是严重一点的上火牙疼,充其量算是小恙。但是小恙而大痛苦,吃不好,睡不好,无时无刻的疼痛提醒着您,由牙疼到耳根疼再到太阳系疼到最后直至半个脸痛的麻木而浮肿。加上北京闷热骚湿的天气,真如炼狱。

幽深绵长,沉闷利钝的疼不间断的调戏我过程中,我时不时如梦如幻般的会和身体里这个宿敌进行对话。你是谁,你在哪里,你为什么要折磨我。有时我会向他示弱、投降,不要折磨我了,你要我干啥都行,你只要停下来。我记得我还向它行贿示好,我每天好好的供养你,美馔鲜食。而当我真正清醒的时候,回想和它的每次交锋,我对他一无所知。

我。一个形而上的我,一个形而下的我。

通常我们所说的我,也是中国人文里的我,大多是形而上的我,是精神意义上的我,是具有多维度内涵的我。我们会脱口而出的说我是什么样的人,我喜欢什么电影什么书,喜欢什么样的姑娘和她身上的味道。而真正意义上的本我,形而下的我,每日载我而歌,托我而行的那个真正物理上的我,似乎永远只是个配角,甚至您会突然发现,我们对这个可怜的任劳任怨的家伙知之甚少,完全是一个陌生的家伙。直到有一天这个家伙生气了,罢工不干了,我们才意识到这个家伙的存在,才意识到平时有点溺爱了形而上的我,而忽视了真正的本我。

“我”之长存,而忽亦久矣。中国文化是忽略、不提倡,甚至压抑追求肉身的。认为身体是只有耻感与罪感的东西,唯有苦难才能洗去它们;痛感需要忍受,快感需要抑制。老子有过名言:“吾所以有大患者,为吾有身。及吾无身,吾有何患?”甚至把身体当作了一种累赘和负担。

时不时身体上两个我进行一次坦诚布公的谈话是一件好事。有道是皮之不存毛将焉附,载我而歌,承我而愉的不是它者,是另外一个自我。

观自在菩萨,照见五蕴皆空,方度一切苦厄。
<<<
书画琴棋诗酒花,当年件件不离它,如今七事都改变,柴米油盐酱醋茶。
<<<

上面这首诗是命运多舛的苏东坡的真实写照。从才高八度、气贯长虹的文学青年,经过政治人生的洗礼,沦落为油腻的隔壁大叔。曾经的庙堂高山仰止的偶像,如今只能曳尾涂中。

<<<
一曰无事以当贵,二曰早寝以当富,三曰安步以当车,四曰晚食以当肉。
<<<

入世和出世,似乎是每个曾经沧海的人生抱负的起点和终点。戏噱的油腻中年,其实是一种知天命的出世态度。


《鱼·翅与花椒》这本书的书名起得好,有点“枪炮与玫瑰”的韵味,但讲的是和吃有关。尽管书的风格是纪实文学,当看此书扔能让人口舌生津,似有绕梁余味。

一个生在牛津,剑桥大学毕业的英国姑娘,不远万里来中国成都求学,最后确成了一个地道的中国吃货。不仅走街串巷寻找四川美食,还一猛子扎进去,上了一个川味烹饪学校。从此一发不可收拾,拜码头学厨艺,出没在各大饭店的后厨之中。从生猛的川菜,提神的湘菜,到温柔的闽菜,惊人的粤菜,和辉煌的宫廷菜,这个叫扶霞的英国姑娘已经完全超越了一般中国人对中国菜的认知和烹饪技术,成了一位地道的中国美食家,除出书介绍中国菜到国外,还成了一些排场场面的座上宾和美食点评家。

这位英国吃货姑娘有点像春季我看的另外一本纪实文学《[[东北游记]]》的作者迈克尔•麦尔,有追求、专注而坚韧。在我这个中国人眼里,不管他们的调查结果是否科学和精准,他们是有趣的人。这样的人一直也是我追求的,像古代的李渔、张岱或沈复,和最近读的民国清流,如辜鸿民等,他们没有轰轰烈烈的事迹,然而遂愿而为的率性,有点偏执狂的专注,确显得那么有趣而弥足珍贵。而时下,如我辈有那么多的放不下,那么多的算计、衡量和计较,以致最终一事无成而碌碌无为。也许这就是古人说的“舍得”辩证吧。太多计较得,而不得;无心插柳的舍确绿树成荫,硕果累累。

看[[鱼·翅与花椒]],不要当菜谱来看,虽然作者每一章后面都会附一道菜的做法,本书核心看点是一个外国姑娘从接触中国菜到最后成为美食专家的历程。对一位老外来说,深入中国菜的内核和掌握精髓,不仅仅需要对自我的不破不立的生存还是毁灭的勇气,更需要领会中国“民以食为天”的文化要以,也许这才是本书的看点,第三只眼睛看中国。
对于热门作家的作品,我一般都有意回避之,不想赶热闹,找话题。蒋方舟不知道算不算热门作家,至少在中国她是个公知、话题人物和电视节目热门嘉宾。我对她有限的认知,之前是来自媒体对天才少年的报道,最近是因为看窦文涛的节目,她变成了常驻嘉宾,从而走进了我的视野。对她的印象谈不上好,也说不上讨厌。不过其率真的性情还是值得欣赏的。

而拿起她的这本日记体书 ---《东京一年》,完全处于这本书的东京二字,和蒋方舟名字没有关系。中日文化在近代史上互相影响,你中有我,我中有你,所以中国人对日本及日本文化总带有复杂的看法。第一次看蒋方舟的文字,总体上没有让人失望,不像一些年轻女作者的文字显得苍白和无病呻吟。蒋的文字无论是写作技巧还是遣词造句透出一股子成熟,这应该是她长年写作锻炼的结果,她虽然她是89年人,但人家毕竟7岁就出书了。不过她的语言风格依然有点轻飘,这可能是网络时代新青年作家的共性吧,古汉语字、诗词,付之阙如,取而代之的是一些网络语言,例如中二等、打 call等。除了成熟的写作技巧和流畅的行文,我对蒋方舟读书的广博颇感佩服,也许这是专业作家的职业必备需求吧。也许正因为此,蒋方舟的文字里的一些比喻的运用显得十分有趣和精妙,如:


<<<
因为掌握了新的技能而变得很自信,像第一次放学不用家长接就能回家。 

大概就像面对一个在葬礼上哭得不能自已的人,忽然指着他身后喊道:“看!UFO!”哀伤的人或许会因为错愕而短暂地停止哭泣。 

还有一尊是唐朝天龙窟第二十一窟的观音像,眼鼻唇秀美极了。我看了一会儿,简直要像谈恋爱一样脸红起来。 

从咖啡馆的窗户看到里面的人暖和又开心,觉得自己像卖火柴的小女孩。 

甚至还点了一直不敢尝试的马肉刺身。味道却很一般,带着血的马肉,太鲜活了,似乎能尝到它生前奔跑时的味道。 

老人像是另一个物种,或是另一种形式,当世界是GIF、AVI格式的时候,他们已经提前进入了JPG格式,没有多余的动作,所有的情绪反应也降到最低。 

比如“7岁写作,9岁出书”这些我讲腻了的故事。但是在我写出好的作品之前,也只能靠这些故事来引起读者对我的兴趣,和表演吞火球、钻火圈没什么区别。 

横尾忠则的作品,简直是将我们日本人内在某些不想面对的部分全部暴露出来,让人愤怒,让人畏惧。这是何等低俗的色彩啊……然而在没有办法被这些鲜明色彩包裹的黑暗深处,似乎暗藏着某种严肃。就像马戏团钢索少女缀满亮片的底裤会让人感受到某种严肃那样。
<<<
“恪”字谁都认识,但是能读对陈寅恪名字的人我估计不多,我之前一直读作陈寅恪(què),梁文道似乎也一直读 què。今天看《民国清流:大师们的中兴时代》方知是错的。原本“恪”读què还是“kè”都说的通,但本主出来证明了,那一定是没错的。

<<<
世人多把陈寅恪之“恪”字,读作“què”,说是因陈氏原居福建上杭,属客家人,当地读“恪”作“què”。据《守护语林》考证,上杭的客家话里,根本无“q”这个声母,“què”应为粤语的“恪”的发音。陈寅恪本人在成都燕大授课时,曾亲口对人说:“我的名字念‘客’。”有人曾问陈寅恪,既然你自己将“恪”读成“kè”,而世人却读成“què”,你为何不予以纠正呢?陈笑着反问:“有这个必要吗?”于是,世人误读至今。其实,陈寅恪不改“恪”之读音,乃有出处,《辞海》载: 恪(kè课,旧读què却),谨慎,恭敬。《诗·商颂·那》:“执事有恪。”《新唐书·崔元综传》:“性恪慎,坐政事堂,束带,终日不休偃。”其言“旧读què却”,可能另有原因。故读恪为“kè”与“què”无对错。 
<<<

陈寅恪,是我最喜欢的民国人物之一(其它几位为:辜鸿铭、章太炎、胡适)。[[正如前述|那位一直喊”危险!危险!“的辜鸿铭]],辜鸿铭是真性情;章太炎是真学问;胡适是真君子;陈寅恪是真学问加真君子。民国初期的大师们,大凡有才学者,或狂傲,或峻急,或狂戾,或伐异,或恶札,或癖怪,或疯癫。而陈寅恪虽博学,却虚怀、诤友、清洁。

从陈寅恪与鲁迅之间的关系即可看出其德品一二。陈寅恪少年即留学日本,与鲁迅同学。然而在陈寅恪的文字中很难看到鲁迅二字,鲁迅的日记也只有一条提到陈寅恪,这绝非二人关系有隙,似乎另有它情。陈寅恪晚年这样解释到:

<<<
鲁迅的名气越来越大,最后以“民族魂”的大旗覆棺盖椁,继而成为“先知先觉”和“全知全觉”的圣人,他怕言此事,被国人误以为自己像鲁迅所说的那样,成为“谬托知己”的“无聊之徒”,“是非蜂起,既以自衒,又以卖钱,连死尸也成了他们的沽名获利之具”。
<<<

事实上陈寅恪是看不起鲁迅的,他的解释跳过了二人相识的二十年,只谈到了鲁迅晚年及其去世之后,皮里春秋是嘲讽和不屑。事实上鲁迅的名头是真真的被夸大了,被神话了,连今天的我看到鲁迅的“民族魂”的大帽子都烦,何况对鲁迅知根知底同时代的陈寅恪那。还有一位民国大师也是一生都不愿意谈鲁迅,那就是钱钟书,同样是一位灵魂高洁之士。
终于把《民国清流》四卷本给看完了。

汪兆骞老先生这套书在民国诸多作品中应该属于最具诚意之作,在史料占有以及理解方面,如果不具备一定的基础和功力实难驾驭。这套书按照编年体架构,从民国元年开始各大清流大师一一亮相,随着时间的推移,社会环境的变化,各个人物逐一开始变得丰满起来,直到他们从您眼前走过,又看着他们的背影慢慢的走远,消失。虽然整套书只截取了区区34年的历史片段,然而这段时间恰是历史中华大地历史长河中发生变革、变故、灾难和曲折最多的岁月。读完这套书之后,除了明白了为什么大家对民国历史感兴趣,也让我对当下社会以及个体信仰和行为准则有了更多的思考。

民众对中国历史热有两个怪现象,爱宋朝和热民国。爱宋,简而言之是一种对中华文明曾经高潮的追忆,以及对所谓“崖山之后无中国”汉民族苦难的缅怀,这是一种虐恋。“民国热”,其实是一种对当下不满情绪影响下对故去的怀念,民国并不那么美好。哈宋和民国热现象有一个共同特点,那就是大师辈出,文人纵横捭阖,言论环境宽松。“悟以往之不谏,知来者之可追;实迷途其未远,觉今是而昨非”。我想这才是这两股热背后的真正原因。

这套书另外给我最大的收获是那些逝去大师们高山仰止的高尚品德给我的影响和营养。蔡元培、章太炎、胡适、陈寅恪等这些灿若星辰的大师,之前对我来说只是一些符号,当走近他们后,清流宿儒大师身上那股强大的人格魅力气场距百年而不衰,与国家和民族的大义,对同侪和朋友的无私,对后辈和弱者的提携与关系,真可以用厚德载物,静水流深来形容。从另外一个角度看,之所以给予我营养,正是当下世风之不古,民风之沦丧,信仰之缺失;一切官方和民间的准则模糊不清又似有似无;个体在公共活动中的缺席以及群体缺少共同目标和追求,从而游历于国家和民族之外,所以不得不上下而求索。
年初我对今年要看的书作了个[[初步规划|2017年读书回顾和2018年读书计划]],其中社科类要占30%,事实上上半年所看书籍中此类书籍寥寥无几。社科,在我的字典中不仅仅是指社会科学,还包括了部分自然科学部分。这也常使我纠结,例如哲学类书籍,我不知道是归类到那一类。在我有限的知识理解范围内,我会把哲学和科学(或自然科学)纳为一类。哲学是研究普遍的、根本的问题;科学是隐藏在现象背后的、通过逻辑推理才能知道的探究事实真相的方法论,是对自然现象的规律进行探索和总结,二者殊途同归。难怪罗素说:“哲学是某种介乎神学与科学之间的东西。一切确切的知识都属于科学;一切涉及超乎确切知识之外的教条都属于神学。但介乎神学与科学之间还有一片受到双方攻击的无人之域,这片无人之域就是哲学。”我的迷惑和纠结可能就是这中间区域的缺失吧。这个阅读主题也是我今年特别感兴趣的,特别是科技哲学。所以我在整理资料时尤其纠结,不知道该放入哲学的筐,还是纳入自然科学的篮。悬而未决,希望之后我能想清楚这个问题。

前些天身体小恙,让我对自己的身体产生了种种[[疏离和陌生感|2018年07月31日周二下午10:34:43]]。我有十几年没有进过医院的大门了,对于形影不离的我的肉身完全不了解,这种疏离和陌生感让我感觉到恐慌,甚至恐怖。信仰精神已匮乏,如果连我之皮囊都无所了解,我到底是谁?什么又是我那?

《认识身体》是列在我预备书目自然科学类中的其中一本,这几天出差闲暇就时不时拿出来读一读。

书的作者加文•弗朗西斯是英国一位全科医生。全科已经很难得了,更难得的是这位医生用十年时间做环球旅行,而且还是《伦敦书评》、《卫报》与《纽约书评》的撰稿人。所以看他的书完全没有福尔马林的味道和手术器械碰撞出的冷冰冰的金属声,而像是看一本田野笔记,从病人说起,到引起病因器官组织的科学认识,再到治疗方案的历史演变,中间还穿插着历史上与此病相关的名人轶事,偶尔作者还会有趣的八卦一下。

例如在关于耳朵的一章,作者提到患有耳疾的博尔赫斯:

<<<
博尔赫斯的父亲久闻瑞士日内瓦的眼科享誉全球,于是他带着当时只有十几岁的儿子来治疗眼疾。那时正值1914年,第一次世界大战波及整个欧洲,而博尔赫斯一家人也被困在此地。根据伯格作品回忆,年少的博尔赫斯逐渐爱上了这座城市,他曾经在与一位风尘女子交往的过程中失去了童贞(博尔赫斯怀疑他的父亲也是这位女子的熟客)。1986年,他选择重回日内瓦并在此与世长辞。作为博尔赫斯的新婚妻子,玛丽亚·儿玉(Maria Kodama)女士陪伴他走过了人生最后的旅程。她曾经作为助理挽着博尔赫斯的双臂,协助他穿梭于迷宫般的阿根廷国家图书馆。
<<<

作者把博尔赫斯患有遗传性耳疾说明白也就罢了,结尾还不忘八卦一下父子风流事。

<<<
博尔赫斯并不认同莎士比亚作品中对于盲人黑暗世界的描述:根据他自身的感受,失明所带来的不是暗夜,而是深陷发出神秘绿光的浓雾。与之相反,博尔赫斯对于弥尔顿(Milton)作品中的细节刻画更为认同:弥尔顿在伏案撰写反抗君主的檄文过程中失明,随后只能在“漫无边际的黑夜中”伸开双手小心翼翼地摸索前行。
<<<

才之所至!作者不仅把病例说的明明白白,把身体构件解释的清清楚楚,还从历史和文学作品中纵向钩沉横向索引,把原本索然无趣的自然科学写的像人文作品。

在“头部”一章,当解释是什么引起了面部表情的变化时,作者结构了达·芬奇的名画《最后的晚餐》:

<<<
(达达·芬奇)并且在15年后将这些心得体会用于绘制《最后的晚餐》。其中导致安德烈前额皮肤紧皱的额肌被标记为“恐惧之肌”。此外,巴多罗买、彼得与老雅各布在眉宇间均表现出愤怒的咆哮,而造成这种结果的上唇鼻翼提肌被标记为“愤怒之肌”。
<<<

达·芬奇本身不仅是个画家、科学家,他还是一个医生。作者也少不了对其在医学上的贡献说明一番。

高冷的自然科学一旦和人文科学深度结合,会产生出一些美妙的结果,就像混血儿看起来总是很美。
时代悠忽而变,甚至您都感觉不到转变的颤动,转化已经完成。支付,已经完全脱离了现金交易;读书,已经不再手握厚厚的书本。就阅读而言,我已经有许多年不再看杂志了,纸质书这几年也看的少了,阅读已经完全电子化,甚至阅读纸质书已经有点不习惯了(主要是纸质书没办法把标记转化并同步到笔记进行整理)。这种遽然的变革,总体上是一种进步。事物都有两面性,技术的进步虽然带来了便捷和便利,形而上 --- 载体和呈现形式--- 发生了巨大的改变,然而不可避免的形而下 --- 内容和方法 --- 也发生着改变。内容,变得肤浅而媚俗;读书方法,碎片化信息阅读等同于读书(文本阅读),这些形而下的变化,在传统的思维框架下我是完全不能接受和认可的,但是我也不敢枉然臆断它就是错的,因为未来也许它就是主流,它的缺陷或不足有可能技术为之补齐,技术的发展往往就是这种路径。所以,一切的预测在当下都显得过时。

言归正传,说说出差期间看的这套书吧。

《天涯》杂志精选的这套四册本套装合集,如果没错猜错,有点对过往繁华时代的追忆和祭奠的意思,把杂志几十年积累的压箱底货都翻出来了,诚意有余,可读性不足。诚意有余,四册书,每册一个主题,不乏一些大家的早期作品;可读性不足,第一、四册虽然自成体系,然,作品青涩拙朴,有点像课堂作文(这可能和七八十年代那波作家的底子有关,他们的早期作品难免有点范式化,如:一提到冬天,就这样写:西伯利亚的冷空气。。。。。)。可圈可点的是第二三册,一册盘点了五十到九十年代各个时代的思潮和特征(这也是我选择读这套书的原因,像梳理一下[[中国百年思潮迭代和探究]],待补);另一册是名家短篇,可读性很强。
把[[《民国清流》|民国清流:那些远去的大师们]]四卷本看完,再接着看这本民国大佬自传 - 《国士无双》(蒋廷黻回忆录),浑然天成,毫无违和感。这都拜《民国清流》作者编年纪事之功,把民国主要人、事梳理妥帖。

蒋廷黻在《民国清流》中着墨并不多,个中原因可能与其属国民党序列有关,又或许蒋后期从政已不属清流之列。然蒋廷黻之于民国,及其在民国名人谱中的地位,不能一言以代之。

看传记类书籍从历史的角度有“第一视角”的“在现场”之感,这是看传记类作品首要功效。例如蒋廷黻在书中提到“九一八事变”之前,日本外相曾经给民国相关人士提出暗示性信息和提醒 --- 将有大事发生。这让我很吃惊。

> 一九三一年冬,有一位朋友告诉我,币原于那年夏天就曾要求当时中国驻日公使汪荣宝,回南京向政府报告。“报告你们政府,”币原说,“一个大事变就要发生了。除非中日双方政府谨慎处理,双方均将被毁。尽速和我来解决。但,我一定要占一些便宜。如果你的政府不肯让步,我的政府必然会垮台,而后任将较我更甚,会要求无厌。”
> 
> 整个七、八两个月,币原一直都急于寻求谈判的机会,而南京和东北方面都尽量设法避免。明了对方所使用的策略后,我不禁感到我们的政府措置失当。而且也越发使我相信日本民政党的政府是急欲将“九一八事变”地方化的。

除之,作为国民党高阶官员的蒋廷黻在关于共产党“长征”的描述也颇有意味:

> 为中共从江西流窜到延安是“长征”。“长征”一词具有英雄气概。即使他们的逃窜有几分英雄色彩,但是西方作家却不该忽略了他们的“长征”乃是中央军追剿的结果。其流窜一事就政治观点说有两点值得注意。第一,中央政府因为追剿共军而扩大了控制和影响区域,包括中国的西南部。第二,以西南为根据地,使中央能够对日长期抗战。

这样的看法和观点之前我是没有接触到或想到的,也只有当事者,执牛耳者才有此种论述。

看传记类书籍另一功效是了解他人思想和处事哲学。作为晚清科举时代最后的童生,蒋廷黻幼时系统的接受了中国传统教育,少年时机遇巧合留学西洋,学成归国之后先是大学任教,后被蒋介石赏识成为其幕僚。在民国官场,相对于割据军阀来草莽英雄说,蒋廷黻不可不谓之一清流,蒋介石之得力资政(蒋廷黻自称为“冯妇”)。就其“九一八”之后对日是和、战问题的看法,放在当下依然颇具意义。

蒋廷黻认为,当外交危机发生时,当国家处于危难时,不计后果的抵抗并不是最理想的选择,而适当的妥协,不失尊严的妥协,可以为有力量抵抗赢得时间。蒋廷黻依然不认为日本会对中国构成永久性的威胁。他相信时间对中国有利。因此,在“九一八”之后,蒋廷黻的主要想法就是要为中国争取时间。然而,蒋廷黻这种理性分析,在二十世纪三十年代初期的中国,很难获得知识界的认同。

真理大部分时间掌握在少数人手中。

假以时日,换在当下环境,蒋廷黻的这种观点也一定(同样)会被很多人攻讦为汉奸投降派。这是中国人尤以中国文人几百年不自信的“敏感”所致。

> 严复五四时期所预感的那样,中国人至少从宋代开始,只能言战,不能言和,否则就是奸细,就是投降。传统士大夫没有办法解决这个问题,即便对世界有相当了解的林则徐,面对不可战不必战也无法战的英国,也无法建议朝廷缓和局势,用谈判而不是用战争解决争端。当最后琦善不得不出此和策时,依然被视为卖国,视为罪人。所以在近代中国很长一段历史上,但凡遇到外族,只有喊打喊杀一条路,如道光年间的禁烟,咸丰年间的英法联军,同光年间的中法越南战争,光绪年间的伊犁问题、甲午之战,以及义和团战争。对于这些中外冲突,中国士大夫无不慷慨陈词,主张一战,主和者噤若寒蝉,大胆反对如许景澄、袁昶等,均付出生命代价。

除此之外,蒋廷黻关于“权利政府”的论述,也颇有玩味,发人深省,助人思考。

<<<
中国近二十年来没有一个差强人意的政府,也没有一个恶贯满盈的政府。极好极坏的政府都只在地方实现过,没在中央实现过。因为中央就是有意作好,它没有能力来全作好;中央就有意作恶,它也没有能力来作极恶。这二十年,从袁世凯到蒋介石,各种党派,各种人物,都当过政,大致都是如此。照我个人看起来,就是北洋军阀如袁、段、吴、张,都是想做好的,但是无了不得的成绩可言。因为他们的力量都付在对付政敌上去了。在对付政敌的时候,他们就不得不牺牲建设来养军,不得不只顾成败,不择手段。问题不是人的问题,是环境的问题。在这个环境里,无论是谁都做不出大好事来。中国基本的形式是:政权不统一,政府不得好。
<<<


<$appear show="more {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} less">

这些年看了不少关于民国方面的书,对民国的印象依然是粗线条的、模糊的,与当下现实对比的错觉和虚假臆想的。历史没有绝对的真相,只能趋于真相,在宏观的想象下,一些具象的事实才能够对比说明问题。也许看传记是一条微观历史之路吧。

//民国印象参考:''这就是民国''(陈丹青,张鸣,贾樟柯,钱理群,张大春,关于民国演讲)(需翻墙)//

<iframe width="560" height="315" src="https://www.youtube.com/embed/Y-PxNnwYzUQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

</$appear>
什么事情,只要不想做,总能找出许多充分的借口来欺骗自己。而突破的关键节点,就在这再坚持一下的一念。

已经又看完两本书了,一直压着没有写读书笔记。实在不该,惶恐如也。

这本具有地摊文学之名 --- 《邻人之妻》---大谈性事的书,着实让人侧目。我不知道此书在美国流行是否与之有关,而我读进去之后,收获颇多。

之前看了不少田野调查笔记类书籍,例如《[[东北游记]]》、《[[我在现场:性社会学田野调查笔记]]》、《[[鱼·翅与花椒]]》,而这些书无一能与《邻人之妻》相比。《邻人之妻》作者特立斯花费数年时间参与所叙之事,不仅是一个观察者,更是其中一份子。回过头来看国内同类书籍,如《我在现场:性社会学田野调查笔记》,真是隔靴挠痒,把臆想当事实。《邻人之妻》的田野调查的写法堪称经典,用教科书级来形容之也不为过。

> 他也许确实将非虚构写作的触角延伸到了通常小说才可以到达的领域——人物的心理世界、人物的私生活等,但是在他能够真正“在这里”、真正与人共情之前,他离真正的文学也确实仍有一个拥抱的距离。

> 它既是一本包罗万象的社会历史百科全书,所涉及的领域包括出版、法律、宗教、家庭、自发组织的俱乐部等;也是一部错综复杂的非虚构文学作品,以细腻的笔法串联起了若干精彩而真实的故事;它更是出色的深度新闻报道,其对“参与观察”这种研究方法的极致运用,甚至可以对社会科学学科有所启示。

就像上个月看的科普类小书《[[认识身体]]》,	“书完全没有福尔马林的味道和手术器械碰撞出的冷冰冰的金属声”,作者加文•弗朗西斯不仅是英国一位全科医生,还是《纽约书评》等报纸的撰稿人。《邻人之妻》作者特立斯是名资深记者,《邻人之妻》不仅写出了虚构小说方有的文本结构,还有引人入胜的故事情节。虽然《邻人之妻》内容以性为主线索,甚至涉及多人性交等淫乱场面,但读的过程中你完全引起不了身体的任何化学作用。

<<imageSlider  [[https://one.rizi.me/Photos/webphoto/Hugh-Hefner-Playboy-founder-at-his-mansion-Chicago-1966.jpg]]    "《花花公子》老板海夫纳和他的玩伴们-1966">>

《邻人之妻》内容上有美国一些真人、真事组成,每一个人和事都可以独立成为一个故事叙述,然而每一个人、事又彼此有关联和影响。所以作者就把这些人事打散,以时间的推移融合叙述。里面涉及一夜暴富的《花花公子》创始人海夫纳、创办裸体性自由社区的夫妻芭芭拉和威廉森、美国色情调查委员会,以及一些文艺作品《查泰莱夫人的情人》、《洛丽塔》等在美国的命运演变。通过这些人、事在每个时代的发生(起)、美国社会的反应、民间与政府的博弈,展现出美国今社会性观念的历史脉络。除此之外,我在其中还嗅到一股自由的味道,这在中国是最稀缺,最珍贵的。
由于对西方艺术的茫然无知,而又不想在短暂的一生中错过这些人类几千年积累的人类文明的重要组成部分,所以最近几年有目的的读、写、甚至探索性研究了不少西方艺术和艺术史。而这本由世界两大拍卖行之一的苏富比资深拍卖师写就的启蒙读物,看之前由衷的充满了厚望和期待。就苏富比占世界艺术品拍卖市场中的份额,有理由想象着此书会有诸多艺术品背后的诸多信息,如艺术家轶事、作品流转历史或拍卖生涯中的故事等。如果这些是你期待看到的,那这本书会让您很失望。诚如《苏富比的早餐》的副标题:职业拍卖大师写给你的艺术启蒙A-Z,整书三个部分的各个小节,分别围绕一个个短语展开,如:性、居住地、色彩等等。也许我并不关注一幅作品的商业价值 --- 我也买不起,我更在乎苏富比拍卖师眼中艺术品与常人的不同之处,以及艺术品何以成为价值不菲的商品的决定性因素。至于此书的启蒙属性,实不如《[[艺术的故事]]》呈上的饕餮大餐。
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201810]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



只有周末才有精力对一些阅读进行梳理,平时也只能在[[Twitter|https://twitter.com/coze]]上啁[zhōu]啾[jiū]两声。

《[[琅嬛文集]]》这本小书看了蛮久。这类书 --- 如《[[说文解字]]》、《[[资治通鉴]]》、《[[古文观止]]》、《史记》等文言精品 --- 我都是以年为单位做阅读计划,文言阅读本身障碍就多 --- 需要查阅许多字词意思,要吃透精品之所以精品的内涵更需要反复品读,所以读此类书不可一撮而就,徐徐而津逮。(见列[[文言津逮系列]])

张岱的这本《琅嬛文集》涵盖内容多而杂,虽然没有《[[陶庵梦忆]]》有名,但里面不乏一些妙趣横生的小品,这是张岱作品的一大特点。

<<<
他最突出的特点还是写作上的才能,他的主要成就也正在这里。他的学问并不怎样了不起,就文化素养来说,大约也不过是封建社会中等文士的水平;不过他的兴趣是很广泛的,平时非常注意社会上的各种人物、动态、人民生活、风俗习惯,以至食物、蔬果等许多方面,而且有加以欣赏、纪录的兴趣与勇气。这许多,往往正是旧时代的正宗文士所不屑一顾的。
<<<

正如其几百年来被无数人传为佳话的《自为墓志铭》,足以彰显张岱之真性情。一个没有趣味的人,其文章再好,总是显得干巴巴的。可真性情非装装样子就可以做到的,是其骨子里汩汩冒出来的可爱。一个可爱的人是那么让人嫉妒和羡慕,可这是学不来的。

{{2017年11月14日 下午 08:52:39}}

书中一段关于朋友之谊的话,张岱真写出了“一佛出世,二佛升天”的感觉:

<<<
昌黎云,世之欲久居人间而阅人代谢者,诚何心也。仁人之言,最为沉痛。枚(袁枚)故以一炷香默祷真宰,''不求老体康强,不求子孙富贵,只求春风去而复来,友朋散而仍聚。如世兄昆季,四十年骨肉之交,倘能一旦重逢,交欢尽意,便是成佛升天,极乐世界,又何必一鸳鸯抱一枝花耶。''
<<<


待续。。
《胡适谈读书与做人》这本小册子是胡适的杂文集,里面的文章大多在其他地方都读过,无甚新意,聊作拾遗。然而这本小册子的名字起的有点不好,谈读书适宜;谈做人,未必是胡适的风格。读了不少关于胡适的作品,胡适在民国诸家中属清流之砥柱,博学谦逊,低调内敛。我想胡大博士如果活着,也未必会做这种大言不惭的教人做人之事。

书摘:

<<<
读书无捷径,是没有什么简便省力的方法可言的。读书的习惯可分为三点:一是勤,二是慎,三是谦。

宋儒张载说:“读书先要会疑。于不疑处有疑,方是进矣。”他又说:“在可疑而不疑者,不曾学,学则须疑。”又说:“学贵心悟,守旧无功。” 宋儒程颐说:“学原于思。”

疑古的态度,简要言之,就是“宁可疑而错,不可信而错”十个字。

《诗序》曰:“情动于中而形诸言。言之不足,故嗟叹之。嗟叹之不足,故咏歌之。咏歌之不足,不知手之舞之,足之蹈之也。”

<<<

我很喜欢小品文,适合现代生活节奏,又不失信息和意义的传达。当然,与长篇或大部头比,大部头有大部头的优势,如果说大部头是大餐饕餮,那么小品文算是冷拼或者糕点。各有滋味,各有派场。小品文这两年看了不少,古代的从清朝前推已经看到明代,向后推只看了民国时期的。而现代或者当代是一个小品文缺失的时代,这与社会有关,人们缺失一味个人情趣,自然产生不了伤花悲月;虽然大多人背井离乡,但记忆中的故乡已经消失,自然也无伤离别思故乡的情绪;科技再发达资讯再汹涌,自由言论的土壤仍是石板一块,何谈针砭时弊“像匕首投向敌人”的檄文。不要说那些微信公众号博客之类的文章,我不否认个中却有佳品,但都不足以让人平心静气品读。

而短篇(小说)和小品文又有不同。胡适说:

> 短篇小说是用最经济的文学手段,描写事实中最精彩的一段,或一方面,而能使人充分满意的文章.......“最经济的文学手段”。形容“经济”两个字,最好是借用宋玉的话:“增之一分则太长,减之一分则太短;着粉则太白,施朱则太赤。”......因此,凡可以拉长演作章回小说的短篇,不是真正“短篇小说”;凡叙事不能畅尽,写情不能饱满的短篇,也不是真正“短篇小说”。

博尔赫斯以短篇享誉文坛,在中国的名头也很大,尤其在八九十年代,与写《百年孤独》的马尔克斯可称为“南美洲双雄”(我说的)。然而我读《博尔赫斯短篇小说集》却读出了《故事会》的感觉。我不知道这是对博尔赫斯大名头的亵渎,还是因为《故事会》在中国过分的被世俗化了。也许一篇好的短篇小说本身就应该具有“故事会”的体质,再加上文学的外衣以及文学之外(言外之意)意义的延伸,方具短篇小说名篇的气质。
互联网时代和中国高铁大交通战略虽然从空间上拉近了人和人以及人和他乡的距离,副作用就是加剧了感情维度的疏离。加之中国城市化进程大跃进式的推进,几千年来沉淀的乡村文化几乎荡然无存,旧文人笔下的幽幽离乡怀愁,对当代几乎多半身处他乡的人来说,是夜深人静梦醒时分无处寄托的惆怅。故乡已经沦陷,乡愁成了一种文艺表现。叶落归根成了几乎不可能实现的旧式田园理想。

前些年每逢春节结束,返乡回城的人们都会以各种方式表达家乡的蜕变和消失,甚至成为每年年后的固定社会热点。近些年这种集体性感叹少了许多,正在沦陷的已经沦陷,部分沦陷的已经是谁人故乡不沦陷。下一代,也可能从90后一代已经开始,故乡、乡愁之于他们仅仅是一个名词,一种没有记忆和温度的强说愁。

《一个村庄里的中国》正是在此大背景下,社会知识分子   熊培云 --- 之所以我称之为社会知识分子是因为起创办的理想国 --- 以自己老家 --- 江西小堡村 --- 为原型,通过记述自己家乡的变化透视中国乡村在当代社会发展过程中受到的冲击、蜕变和消亡。此书不仅是一种田野笔记式描述,作者对三农问题还做了一些纵向历史梳理和横向国际对比,以点带面的折射出中国农村存在的大缺陷和小问题。虽然此书是一本社会性农村记述文本,但作者在字里行间埋藏着强烈的情绪,有温馨、甜美,有指责、声讨,有悲愤、无奈。也许只有像作者这代人 --- 70年代 --- 才会发出这种声音和表现出如此浓烈的感情;也只有像作者一样从农村走出来的孩子才会从书中读出强烈的认同感,勾连出埋在心底多年的乡愁和悲凉。

唯一不足的是现在读此书有点过时,当下农村与作者7年前写此书时的情况有了非常多的变化。
混乱和无序往往蕴涵着丰富的的萌动和巨大的张力,就像黑夜给予点点萤火无上光明的荣誉。

人的成长成熟和衰老,就是化繁为简,万物归一的回归和轮回。

世界万物总归一物。—— 《牧羊少年奇幻之旅》

也许最近事务繁多,或许是心理年龄成熟的预兆。最近对一些“小书”读的很是上瘾,一周多读了三本“故事会”:《牧羊少年奇幻之旅》、《小王子》和《兔子的一万种死法》。与之前读的所谓的高大上的社科人文、晦涩的哲学历史书籍相比,这些故事类小书给予我的收获不亚于前者。除了读时沉浸式乐而忘忧的快感之外,这些“小书”霎那间把人带入另一天地:纯真、自然、善良和美丽,让纷扰和混乱变得可控和有序,让忧郁和不安幻化为快乐和祥和。心,变得明亮、透彻。也许这就是成年童话的魅力,赋予读者可以在次元中自由穿梭的能力。

假如毛姆所说的“[[阅读是一座随身携带的避难所]]”成立,那么我希望随身携带的书中一定要有一本成年童话。

<<tiddlerSliderNoButton 故事二则>>(点击展开)


<<<
恰恰是实现梦想的可能性,才使生活变得有趣。

“天命就是你一直期望去做的事情。人一旦步入青年时期,就知道什么是自己的天命了。在人生的这个阶段,一切都那么明朗,没有做不到的事情。人们敢于梦想,期待完成他们一生中喜欢做的一切事情。但是,随着时光的流逝,一股神秘的力量开始企图证明,根本不可能实现天命。”

因为在这个星球上,存在一个伟大的真理:不论你是谁,不论你做什么,当你渴望得到某种东西时,最终一定能够得到,因为这愿望来自宇宙的灵魂。那就是你在世间的使命。”

“因为我既不生活在过去,也不生活在未来,我只有现在,它才是我感兴趣的。如果你能永远停留在现在,那你将是最幸福的人。你会发现沙漠里有生命,发现天空中有星星,发现士兵们打仗是因为战争是人类生活的一部分。生活就是一个节日,是一场盛大的庆典。因为生活永远是,也仅仅是我们现在经历的这一刻。”

当一个人在追寻自己的天命时,整个宇宙都会合力助他实现愿望。

“我靠给人家预测未来为生。”他说,“我熟悉掷签的门道,知道如何运用它探知一切均已写就的未来空间。在那里,我能够阅读过去,发现已被遗忘的东西,并理解当前的预兆。当人们来找我占卜的时候,我不是阅读未来,而是卜算未来。因为未来属于真主管辖,只有在特殊情况下,他才会揭示。我卜算未来的方式,是通过当前的预兆。秘密就在当前。如果关注现在,你就能改善它。如果改善了现在,那么,将来也会变得更好。忘掉未来吧,你要按照教义过好每一天,相信真主会护佑他的子民。每一天里都蕴含着永恒。”

害怕遭受痛苦比遭受痛苦本身还要糟糕。

没有任何一颗心在追求梦想的时候感到痛苦,因为追寻过程的每一刻,都与上帝和永恒同在。

“世上每个人都有一份等待他去发掘的宝藏。”他的心说道,“而我们心,往往很少提及那些财宝,因为人们已不再想要找到它们。我们只对孩子谈及财宝,然后让生命将每个人纳入其天命的轨道。然而,遗憾的是,很少有人沿着预定的道路,也就是通往天命之路,通往幸福之路前进。人们把世界看作一个威胁,正因如此,世界才变成了一个威胁。于是,我们心发出的声音越来越微弱,但我们绝不会住口。我们退让,不再让人们听到我们的话语,因为我们不愿让人们由于不服从心声而遭受痛苦。”

每个人的寻梦过程都是以‘新手的运气’为开端,又总是以‘对远征者的考验’收尾。”

夜色之浓,莫过于黎明前的黑暗。
<<<
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201811]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



一个有趣的人一定是个博物学家,但博物学家不一定有趣。

之前我一直羡慕拥有一颗有趣灵魂的人,所以在选书的时候有意挑选了一些博物学书籍,加之平时尤爱植物,植物学书籍今年就成为我书架上的座上宾。此类优秀书籍并不多,国产尤甚。

您知道植物的命名法吗?
一株植物之所以叫此而非彼的缘由是什么?
植物名字背后的故事是什么?

《植物名字的故事》这本书就是回答此类问题的。作者刘夙,百度百科词条是这样写的:

<<<
2004年本科毕业于北京大学化学与分子工程学院。2007年毕业于北京大学历史学系,获硕士学位。现为中国科学院植物研究所博士研究生。研究方向为植物学文献和植物学史。
<<<

刘夙算是一位专业学者型业余科普作家,这和之前看的《[[认识身体]]》作者加文•弗朗西斯(他是一名全科医生)有点像,都是自然科学界专业人士,业余笔耕不辍。不过刘夙的文笔没有弗朗西斯有趣,视野也没有后者广博。这并不妨碍一名植物学业余爱好者读刘夙的这本书,虽然书的后半部分一些章节有凑数之嫌,而前半部分关于植物之命名与中国社会历史的结合论述还是很有意思的,见微知著,非专业人士而不能窥之探之。当然,书中也有部分生活植物学知识,如:


<<<
其实,哪怕是去一趟超市,我们也能看到被称作“蛇果”的苹果、称作“奇异果”的猕猴桃、称作“提子”的葡萄、称作“车厘子”的樱桃、称作“碧根果”的美国山核桃。当有些人一本正经地分辩说“提子不是葡萄”的时候,我们便再次看到给熟悉的事物另起陌生的名字所造成的巨大威力。

林奈对大多数植物都采用了“双名法”的命名方式。所谓“双名法”,就是用两个词来为植物命名,第一个词叫做“属名”,首字母要大写,可以视为植物的“姓”;第二个词叫做“种加词”,首字母通常都小写,可以视为植物的“名”。

荷花的地下根状茎叫“藕”,植株出水之后叫“芰(jì)荷”,叶柄叫“茄(jiā)”,叶片叫“葭(xiá)”,未开的花苞叫“菡萏(hàn dàn)”,已开的花又叫“芙蓉”或“芙蕖(qú)”,结的种子叫“莲”……
<<<
与时间赛跑。

赶在2019年到来前再读上几本书吧。

异域周末的阳光洒在酒店安逸的床下沙发上,一口气,准确的说是一气呵成的,消灭了两本书。当然,这两本书我都是以快读法速览—— 摘取自己感兴趣的部分,跳过看似无用的部分。

''《植物的记忆与藏书乐》''

我是被他的书名蛊惑而收入囊中的。由于最近对植物学感兴趣,所以书名中“植物的记忆”一下子击中了我,而植物的记忆与藏书又有何联系?当然,关于“书之书”这个主题我也是非常感兴趣的。
速览之后,方知《植物的记忆与藏书乐》是“书之书”。作者艾柯是一位享誉世界的意大利学者、中世纪学家、符号学家、作家与藏书家。艾柯个人藏书超过三万册,散布在各地的家中,其中有超过一千两百册珍本。本书即为艾柯关于爱书、藏书的演讲稿和短文集。我只读了前半部分 — — 书籍是人类的记忆和爱书、藏书区别,后大部分是关于西方一些稀有珍品书籍的收藏轶事 — — 我估计一辈子都不会碰一下这些西方中世纪书籍 — —所以都一一跳过了。 

至于书名为何为“植物的记忆”,作者诚恳的解释了非故弄玄虚,实为:

> 博尔赫斯笔下博闻强识的富内斯和部落老人篝火旁的娓娓道来,我们称之为肉身的记忆;石洞壁上的楔形文字和哥特教堂矗立的尖顶,我们称之为矿石的记忆;然而散发出最浓郁的知识芬芳和铭刻下最隽永的历史选择的却是纸张书籍上的文字,我们把这种最美好的形态称作植物的记忆。

书中艾柯对书籍文本的概念作了解释,什么是文本?什么是类文本?什么是内文本?什么是外文本?

> 用简单的话说,一本作为载体的书(就是由纸张作为材料制成的物质实体)上面出现的是文本,我们以《约婚夫妇》为例,它的开头是“科莫湖的一条支流”,最后一句话是“那请相信,这实在不是我们的本意”,那么类文本就是指文本之前、之后和周围的东西(通常情况下是印刷形式的,但是也不能排除其他表现方式——在今天可能是附带的光盘)。 内文本指的是与作为载体的书相关的所有物质实体,如扉页、版权页、引言、献辞、前言、后序、勒口、书籍装帧或者护封,等等;而外文本则是书籍之外但是又直接跟它相关的东西,比如新闻报道、预览、书评,还有——用英语能够更好地解释意大利语所无法区分的东西——既包括advertising(广告)也包括publicity(宣传),也就是出版社设法为本书营造的“轰动效应”,比如对于作者的访谈,其他作家的看法和争论,甚至是筹备作品发布会以及研讨会。

而在说明书籍之与人类的意义时,艾柯引用了不少典故和说出许多“金句”,蛮有启发意义。


<<<
但是正如最绝对的噪音与宁静之间只是一线之隔,信息的过于充实可能引起绝对的无知。//(我们现在这个信息时代就是这样,信息充斥,无知剧增。)//
<<<


<<<瓦伦蒂诺·蓬皮亚尼曾经以“一个阅读的人相当于两个人”来作为自己的出版口号。//(读书即为读者与作者的对话。)//
<<<

<<<书籍是为生命买的保险,是为得到永生的一小笔预付款。//(这句话真好,用时下的话说:读书是为信仰充值。)//
<<<

<<<那些破坏、监察、禁止书籍的人让人感到恐惧:因为他们想要破坏或者监察的是我们的记忆。当发觉书籍太多已经难以摧毁,植物记忆的威胁持续蔓延的时候,他们就转而消灭“动物记忆”,即人类的思维和身体。开始的时候总是从书籍下手,但紧接着毒气室的大门就打开了。//(虽然作者暗指纳粹行径,时下一些过分的出版和言论审查制度和行为何不是如此啊。我们单纯想到的是审查,实际上是为了干涉、破坏和摧毁我们的记忆,多么悲哀和恐怖!)//
<<<

<<<我们需要跟那些把书藏起来的人战斗,因为他们和蛀虫一样危险。我们不会使用齐克隆毒气,但是要动用适当的政治和文化手段。必须清楚他们是我们集体记忆的敌人。
<<<

<<<
维克托·雨果在他的《巴黎圣母院》中描绘了发生在副主教福罗诺和法国国王的御医之间的一个场景。 福罗诺 一面打开窗子,一面用手指着巨大的圣母院教堂,它那两座尖塔在满是星星的夜空衬托下,留下黑黑的轮廓,就好像是一个有两个脑袋的斯芬克斯坐在城市中央。副主教静静地观看了一会儿这座巨大的教堂,接着叹了口气,伸出右手指着那本在桌子上展开的印刷书籍,左手指着圣母院,他那忧郁的眼神从书本移到了教堂,说:“哎,这个将会杀死那个!”//(书籍出现时对既有知识延续体系和掌握者的冲击)//
<<<

最后,我用艾柯书中的一句话,与不爱看书的人共勉:

<<<如果读书的经历仍然让你们感到恐惧的话,不要害怕,开始在厕所里读书吧。你们会发现自己也有读书的热忱。
<<<
我有点厌烦了在年终这个点写什么回顾和展望。就像小时候邻居大哥家每年春节大门上年复一年不变的对联横批“又一年”,长大后我才体会到这三个字背后的无声叹息。

可我还是在岁末这最后一天打开了电脑,想写点什么,其实就是想单纯的留下点痕迹 --- 什么都可以,有点到此一游的恶习 --- 习惯了记录。只从进入了互联网时代,我把所有的文本表达都存了一个秘密的地方 --- 也许有一天会交给我的孩子。只言片语也好,长篇大论也罢,每个时间节点都可以回溯,虽然已经记不起了那时候都情绪,但是透过文字我可以拣回部分场景。看看去年今日吧:
<$vars tid="2017's Journal"> 
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars> :

<$details summary="2017年的今天" state="$:/state/myDetailsStateTiddler_2##details-state">

{{2017年读书回顾和2018年读书计划}}

</$details>

如是,年年如斯。愿望和计划的大部分业已完成,这是常规人生 --- 活着,这不重要。<$details tiddler="2018读书目录">
{{2018读书目录}}
</$details>
<$details summary="2018年读书日志" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">

{{2018年读书日志}}

</$details>

已读多少书不重要,重要的是那些未读之书。

同样,完成了那些计划不重要,重要的是未完成部分。未完成部分是顽疾,也是临界点;是撬动希望(也可能是欲望)的杠杆短的那一段。此越短,撬动的希望越大。

那么如何跨越这个临界点?

无它!

一,拓宽边界。如果计划已完成部分是个⭕️,已完成部分越多,未知边界越大。[[牧羊少年奇幻之旅]]里面有一句话:世间万物为一物。万物背后的规律事实都是一样的,或者说是相似想通的。未知边界的拓展,就是打通万物的唯一通道,虽多,但终究归一。

二,认清支点。什么时候万物归一,成就大智慧,决定于这个临界点,就是杠杆下面但支点 @@color:red;''▲''@@。那么这个支点是什么? 我还没有弄清楚,存照,待续。<<tag Task>>

如果说以上是对2019年的期待或者计划要解决的事项之一,那么2019年还有一些更重要的事情需要认真对待:对时间的掌控。

世间没有什么比时间更不值钱的了,也没有什么比时间更无价的了。有价和无价,就在于您怎么利用时间。之于我,分秒必争!

一,生活和工作剥离。我打个世俗比方,工作就像长河淘金,生活就像怀揣金子消费。如果工作和生活搅和在一起,一边在毒太阳下汗流浃背的筛沙淘金,一边听着音乐还喝着咖啡,那么工作和生活的质量都要打对折。所以,严格把生活和工作分开,工作时专心致志;生活时,闲情逸致。

二,生活和网络剥离。当下虽然离不开网络(互联网),但不要让互联网浸入生活,控制生活。网络是工具,不能耽物废志,用完即弃。

我计划2019年要读的第一本书是《[[黑天鹅]]》 --- 如何应对不可预知的未来?2018年已寒意逼人,渐显萧瑟。2019年有可能更加寒冷,低迷消沉。2019年不仅仅是黑天鹅<<ref "[1]">>,灰犀牛🦏<<ref "[2]">>也可能随时杀出,在这种充满未知而已寒意逼人的环境,如何活着并砥砺前行是需要更多的付出和智慧。但愿:

<<<
    待到秋来九月八,我花开后百花杀。

    冲天香阵透长安,满城尽带黄金甲。
<<<

如果用一句话寄语2019年,我想应该是:

<<<
Create like a god.

Command like a king.

Work like a slave.
<<<


-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@ 
<<footnotes "[1]" "简而言之,“黑天鹅”指具有此三个特性的事件:稀有性、极大的冲击性和事后可预测。见 [[黑天鹅]] 。">>

<<footnotes "[2]" "灰犀牛是据古根海姆学者奖获得者米歇尔·渥克的《灰犀牛:如何应对大概率危机》一书,“黑天鹅”比喻小概率而影响巨大的事件,而“灰犀牛”则比喻大概率且影响巨大的潜在危机。">>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201812]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201801]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="notification" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201802]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="success" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201803]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="notification" state="myTempState!!last-open">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201804]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="notification" state="myTempState!!last-open">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201805]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="notification" state="myTempState!!last-open">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201806]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="success" state="myTempState!!last-open">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201807]]"> 

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="book_title"/> - <$view field="caption"/> - <$view field="description"/>  -<$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" class="success" state="myTempState!!last-open">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201808]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201809]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》 - <$view field="caption"/> - <$view field="description"/>  -<$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<<tabs "[[2018年12月日志]] [[2018年11月日志]] [[2018年10月日志]] [[2018年9月日志]] [[2018年8月日志]] [[2018年7月日志]] [[2018年6月日志]] [[2018年5月日志]] [[2018年4月日志]] [[2018年3月日志]] [[2018年2月日志]] [[2018年1月日志]] [[2018读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>
"""
''18-01-1 新年新气象,不如看掌故''
1.《掌故》第一集

''18-01-2 新年第二天''
2. 《掌故》第二集

''18-01-10 零下10度''
3. 《[[图说区块链]]》

''18-01-18 离春节整一个月''
4. 《[[原则]]》 瑞·达利欧

''18-01-28 回家路上人行忙''
5. [[《文学的群星闪耀时》(国内篇)|文学的群星闪耀时-国内篇]]

''18-01-30 家人齐聚偷闲看书''
6. 《知乎1小时》系列

''18-02-7 立春了''
7、[[《文学的群星闪耀时》(国外篇)|文学的群星闪耀时-国外篇]]

''18-02-14 明天就是大年三十了''
8. 《[[我书架上的神明]]》 @@color:red;^^★^^ @@
9.~~ [[越读者]]~~

''18-02-18 初三,无事,突然想再看看红楼梦''
10. [[红楼梦]]脂评汇校本 

''18-03-02 元宵节,外面鞭炮声很闹腾''
11.《 [[王氏之死]] 》

''18-03-11 万物复苏萌动''
12. 《[[子弹笔记术]]》   日·杉野干人 著

''18-03-12 屋里的玉兰花已经开了''
13. 《[[梁遇春散文选集]]》 民国 · 梁遇春  @@color:red;^^★^^ @@

''18-03-16 今天补了去年冬天欠的雪''
14. 《[[书卷多情似故人]]》 大师经典小品之一

''18-03-24 气温一下飙到20+''
15. 《[[民风野趣幽然醉]]》 大师经典小品之二
16.  《[[梦中的欢快葬礼和十二个异乡故事]]》 加西亚·马尔克

''18-03-30 职业阅读''
17. 《[[阅读心理学]]》

''18-03-31 四分之一就要结束了''
18. 《[[旧事新知风雨声]]》大师经典小品之三
19. 《圣经》中英文版,学点英文

''18-04-04 清明假期''
20. 《[[雅记清词写流韵]]》大师经典小品之四

''18-04-09 季节交替 开始牙疼'' 
21. 《[[清代学术概论]]》原典系列二   <<footnote "[1]"系列一见[[2017读书目录]]">>
22. 《[[中国哲学十讲]]》原典系列三
23. 《[[中国小说史略]]》原典系列四

''18-04-10 续读前篇''
24.  《[[东坡志林]]》

''18-04-20 雨霏霏 雾蒙蒙 病怏怏''
25. 《[[艽野尘梦]]》 陈渠珍

''18-05-01 劳动节不劳动''
26. 《[[茨威格文集]]》(全3卷) @@color:red;^^★^^ @@

''18-05-12 初夏周末看暴政''
27. 《[[君主论]]》

''18-05-12 周日 母亲节想妈了''
28. 东方历史评论(第4辑):变革的节奏
29. 《[[历代文言小故事]]》先秦两汉篇  @@color:red;^^★^^ @@

''18-05-13 这一周怎么过?''
30. [[东北游记]] 纪实文学

''18-05-18 新项目筹备中 有点迷茫''
31. 《[[英语词源趣谈]]》

''18-05-25 最近很郁闷 读书也少了''
32. 《[[一个村庄里的中国]]》

''18-05-25 这两本书都是书的书,作为工具书用吧''
33. 《[[我读]]》
34. 《[[私人阅读史]]》 

''18-05-29 猴子掰棒子''
35. 《[[民国清流:那些远去的大师们]]》@@color:red;^^★^^ @@

''18-06-01 进入下半场''
36. 《[[黄金时代:小人物在大时代的出境和选择]]》

''18-06-010 最近时间浪费的太多太多''
37. 《[[怎样学古文二十五讲]]》

''18-06-20 闲来无多''
38. 《[[张贤亮文集]]》
39. 《[[男人的一半是女人]]》

''18-06-28 德国战车无缘角逐世界杯了''
40. 《[[八十年代访谈录]]》
41. 《[[我在现场:性社会学田野调查笔记]]》

''18-07-01 今年开始进入下半场''
42. 《[[这个字原来是这个意思]]》

''18-07-04 上火 牙疼 痛苦''
43. 《[[胡适谈读书与做人]]》

''18-07-09 心不定''
44. 《[[侠隐]]》

''18-07-12 我不知道在干嘛''
45. 《[[不失者]]》

''18-07-19 这周没怎么看书''
46. 《[[莎士比亚书店]]》

''18-07-21 怀疑人生看人生''
47. 《[[人生]]》@@color:red;^^★^^ @@

''18-07-23 大暑过后桑拿天''
48. 《[[民国清流:大师们的战国时代]]》 @@color:red;^^★^^ @@

''18-07-27 牙疼的要命''
49-52. [[《天涯》(人文精品全四册)|2018年09月18日周二下午09:39:26]]
53.《[[民国清流:大师们的中兴时代]]》

''18-08-03 小痒折磨我了一周''
54. 《[[琅嬛文集]]》@@color:red;^^★^^ @@

''18-08-13 已入秋''
55. 《[[鱼·翅与花椒]]》 (译文纪实)

''18-08-18 七夕''
56.《[[东京一年]]》
57.《[[民国清流:大师们的抗战时代]]》

''18-08-25 最近多了一些变化''
58.《[[博物人生]]》

''18-08-29 出差山东''
59. 《[[认识身体]]》
60.《[[齐如山回忆录-清宫史话]]》

''18-09-08 在山东有点迷茫''
61. 《[[博尔赫斯短篇小说集]]》

''18-09-13 返京''
62.《[[国士无双]]》

''18-09-20 难得清闲''
63.《[[奥斯维辛的小图书馆员]]》

''18-09-24 中秋节''
64.《[[伊斯坦布尔:面纱下的七丘之城]]》

''18-10-01 开启假期模式''
65. 《[[邻人之妻]]》@@color:red;^^★^^ @@

''18-10-02 火车上''
66. 《[[苏富比的早餐]]》

''18-10-14 出差之前''
67. 《[[牧羊少年奇幻之旅]]》@@color:red;^^★^^ @@

''18-10-26 蛰居酒店''
68. 《[[胡适谈读书与做人]]》

''18-11-18 立冬''
69. 《[[资治通鉴]]》

''18-11-21 回京''
70. 《[[小王子]]》 “每个大人都曾经是个孩子,可惜的是,很少大人记得这一点。”

''18-11-23 出差前''
71. 《[[植物名字的故事]]》

''18-11-26 心情似乎在变好''
72. 《[[偷书贼]]》

''18-12-1 18年进入倒计时了''
73. 《[[夜航船]]》 //重读//
74. 《[[说部之乱]]》

''18-12-3 又要出差了''
75. 《[[诗经]]》//重读//

''18-12-16 异地周末大学校园里''
76. 《[[且借纸遁]]》

''18-12-19 在东瀛''
77. 《[[中国哲学史大纲]]》

''18-12-20 东瀛''
78. 《[[东风与西风]]》

''18-12-23 东瀛周末''
79. 《[[植物的记忆与藏书乐]]》

''18-12-26 极寒''
80. 《[[柳林风声]]》

''18-12-29 年尾最后一本了吧''
81.《[[马关议和中之伊李问答]]》

[[2019读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[读书检索|Book List]] | [[读书日志|Reading Logs]]

//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//


<$button message="tm-close-tiddler">Close Me!</$button>
去年看了两本关于二战时期迫害犹太人的书,《偷书贼》和《[[奥斯维辛的小图书馆员]]》。《偷书贼》属于虚构类小说,《[[奥斯维辛的小图书馆员]]》是非虚构类小说,两本书都和童年以及书籍有关,但书写视角完全不同。《[[奥斯维辛的小图书馆员]]》记述了奥斯维辛集中营中犹太小女孩保护书籍的故事;《偷书贼》描写的确是纳粹德国一名小女孩藏匿并保护犹太人的故事。两本书都以书籍为线,把人、事、物串起来,然后又以书为载体记录下二战高压环境下人类的善恶。虽然《偷书贼》名气比较大,但是我建议把这两本书当作姊妹篇来读。

书之于童年的意义是打开了一扇通向世界的门,插上一对想象的翅膀。

书之于战争时代童年的意义是一座避难所。

《偷书贼》里的小女孩总共有14本书 --- 比《[[奥斯维辛的小图书馆员]]》里的小女孩多6本。她的第一本书确是在埋葬死去的弟弟时候在墓地里捡到的 ---《掘墓人手册》 --- 墓地挖墓人操作指南。正是由于这本书,小女孩在养父的帮助下逐渐开始了识字,通过不断的“窃书”,叩响了阅读的门。

<<<
她偷了第一本书后,又隔了一段时间才偷第二本书。需要指出的第二点是:第一本书是从雪地里偷来的,而第二本书是从火里偷出来的。还有一点不可否认,有些书是别人送给她的。她总共有十四本书,不过在她看来,她的写作主要是受到其中十本书的影响。这十本书里有六本是偷来的。另外四本中,一本是在厨房餐桌上捡到的,两本是躲在她家的犹太人给她写的,还有一本是在一个阳光普照、温暖宜人的下午来到她手上的。
<<<

其中一段描写小女孩溜进镇长家书房偷书看的情节让我印象深刻。没有见过几本书的孩子一下子看那么多书,好像进入了一座梦幻的美丽宫殿,欣喜,而又不知所措。

<<<
这间屋子不断缩小,小到偷书贼能够触摸得到离她几步之遥的书架。她用手背触碰着第一个书架,聆听着指甲划过每本书的书脊的声音,听上去就像一件乐器在演奏,或是一阵奔跑的脚步声。她的两只手都派上了用场,不停地抚摸着书架,一个接着一个。她笑起来,笑声远远地传了出去。最后,她停下来,站在屋子中央,一会儿看看书架,一会儿又瞧瞧自己的手指。 她摸到了多少本书呢? 她感受到了多少本书呢? 她来来回回走动着,重复着刚才的举动。这一次要更慢一些,而且她把手向前伸,用手掌心抚摸着每本书的书脊,那种感觉很不真实,是魔术,是梦幻,是枝形吊灯上洒下的点点光芒。有几次她差点抽一本书出来,可她还是不敢打扰它们,它们真是太完美了。
<<<

书的最后一句话:

<<<
人类真是不可捉摸!
<<<

//相关阅读://

<$details summary="《奥斯维辛的小图书馆员》" field="text" class="notification">

{{奥斯维辛的小图书馆员}}

</$details>
《白鲸》讲的是一位捕鲸船的船长,因为他年轻出海时,被一条巨大的白鲸咬掉了一条腿,为了复仇,所以他航遍世界各大洋,只为寻找这条叫做摩比·迪克(Moby Dick)的巨鲸。而且他一口咬定这只巨鲸是恶魔的化身,是人类最大的敌人,必须除之而后快。因此他用这种说法,鼓动他的船员们和他一起猎杀这条白鲸。可以说,船长有一股奇特的魅力,才能说服其他人来帮助他。 不知大家是否想过,人类是活在陆地上的,而白鲸生存于大海中。船长是人,只要他好好地待在陆地上,白鲸又如何能够加害于他呢?也就是说,如果人类没有妄想征服大海或掌控自然,如果不是对大自然如此不尊重和不懂得谦卑,又怎会遭受严重的反击。可是这船长却偏要四处寻找这条白鲸,他把白鲸形容为恶魔也是故意的,只是要制造假想敌,目的就是在号召其他人,让所有的人都相信他的话,来为他卖命。 到最后,他的船因为和白鲸对抗,沉没了,所有跟随他的船员们也跟着一起葬身海底,船长本人当然死了,只剩下一个人存活下来,因为有最后的幸存者,才说出了这件事发生的始末。船长是为了复仇,但那些跟随船长去杀白鲸的水手,又是为了什么呢?恐怕他们自己也不太明白。
影像阅读和文本阅读的不同是后者多了一个思维想象延伸的维度,当然从技术层面讲,影像本身属于二度传播,信息筛选和传递衰减是难免的,加之影像技术本身的局限和使用者手法的拙劣,都是文本阅读不可替代。

电影《香水》几年前已经看过,印象深刻。近日再看文本版《香水》,震撼有加。聚斯金德创作《香水》的灵感来之于法国图尔大学教授阿兰·科尔班的历史著作《致命的气体与花的芳香——气味的历史》,其把法国的历史说成是无法形容的臭气史,把十八、十九世纪的巴黎视为欧洲各种污秽的都会,这就是《小说》主人公 --- 格雷诺耶 --- 诞生的大背景。就《香水》作品本身而言,写作方式并无新奇,甚至可以说有点朴素或呆板,深究之,方知乃是被一些写作者抛弃的传统的现实主义叙述手法。但这并不碍于作品的伟大,相反这种大巧若拙的写法更彰显了作品故事的流畅和魔幻色彩。就像《香水》一开始就紧紧抓住读者的注意力一样:

> 十八世纪,在法国曾出现过一个人。那时代人才辈出,也不乏天才和残暴的人物。此人便是最有天才和最残暴的人物之一。这儿要讲的就是这个人的故事。他名叫让–巴蒂斯特·格雷诺耶。

而第三人称的故事叙事方法,恰像上帝的视角,一览无余的展现了主人公的卑微和“伟大”。

> 畸形,使他走起路来拖拖沓沓,可是他活着。他像有抵抗力的细菌那样顽强,像只扁虱那样易于满足,它安静地停在树上,靠着它在几年前获得的一小滴血维持生活。
> 
> 他的灵魂不需要任何东西。受人庇护、关照和抚爱——或者说一个小孩所需要的全部东西——对于童年的格雷诺耶来说,是完全不需要的。更确切地说,我们觉得,他之所以一开始就养成不需要这些东西,其目的是为了生存下去。

文本阅读超越影像阅读的伟大之处除了读者的想象空间之外,读者可以超越文本和故事看到故事之外作者传达的深意。整个《香水》故事里的人物,无不处在宿命论的结局,甚至整个故事变成了宿命论的一个注脚。从主人公多次堕胎夭折的母亲被处于绞刑,孤儿院院长悲哀一生而绝望的死,皮革工厂老板乐极生悲醉酒溺水而亡,香水制造商得意忘形与屋俱毁,市政要员走火入魔的消失,监邢主教及民众意乱情迷,到主人公卑微的生自我毁灭性的死,人物递次在上演宿命的悲剧。

无论是文本还是影像,结尾处的高潮部分,都是那么的震撼,也充满了人性的悲哀。在这里你可以看到鲁迅笔下的“人血馒头”场面,也可以读出狄更斯写给《泰晤士报》的信中对绞刑架旁无情看客的歇斯底里的愤怒。[[见此|https://zhuanlan.zhihu.com/p/55412842]]

> 在此期间,行刑地点林阴大道已经准备就绪。木匠造了个断头台,三米见方,两米高,有栏杆和一道牢固的梯子——在格拉斯,人们还没有见过这么漂亮的断头台。另外还用木头搭了看台供绅士们使用,有一道栅栏可以把他们同普通老百姓隔开。林阴大道门左右两侧房屋和警卫楼里的靠窗位置早就以高昂的价钱租出了。甚至在位置稍偏的医院里,行刑官的助手已经从病人那里租到房间,然后再高价转租给看客。果汁汽水销售商配制了一桶桶甘草水作为储备,铜版雕刻家印制了成百上千张他在牢里画的并经过幻想加工更有吸引力的凶手画像,流动商贩成群结队流入城市,面包师傅烘制了纪念性的糕点。
> 
> 市民们像准备盛大节日一样做了准备。行刑当天,人们用不着干活,这是不言而喻的。妇女们熨平节日的衣服,男人们刷干净自己的外衣,让人把靴子擦得亮亮的。谁有军衔或官衔,谁是行会头头、律师、公证人、兄弟会头头或是其他重要人物,他就穿上制服或官服,佩带勋章、绶带、金链,头上戴着扑了白粉的假发。教徒们打算事后聚集起来举行礼拜,信鬼的人准备举行恶毒的祭鬼弥撒,有教养的贵族打算在“卡布里什饭店”、“维尔纳夫饭店”和“丰米歇尔饭店”里举行别开生面的集会。厨房里已经在烘呀烤的,人们从地窖里取出葡萄酒,从市场上买来鲜花。在大教堂里,管风琴师和教堂唱诗班在排练。
> 
> 四点,看台上挤满了人。台上有许多上流人物,有带着仆从、仪态高雅的富翁,有漂亮的女士,大礼帽和闪亮的衣服令人赞叹。城乡贵族全都来了。参议院的老爷们由两个参议领头,排成一列来了。里希斯穿着黑色衣服、黑色袜子,戴着黑色礼帽。跟在参议后面的,是在法院院长率领下的市政府官员。最后来到的是坐在敞篷轿子里的主教,他穿着闪闪发光的紫色法衣,戴着一顶小礼帽。谁头上还戴着帽子,这时赶紧把帽子脱下来。气氛庄严肃穆。
> 
> 所有人都认为那个穿着蓝色外衣的男子是他们所能想象的最美丽、最迷人和最完美的人:修女们觉得他是救世主的化身,魔王的信徒把他看成是冥界的放射光芒之神,开明人士认为他是最高的主宰,少女们相信他就是童话中的王子,而男人们以为他就是自己的理想的映象。
> 
> 处决那个时代的最可恶的罪犯的计划变成了盛大的酒神节,其盛况是自从公元前二世纪以来世上绝无仅有的:品行端庄的妇女们撕开自己的胸衣,在歇斯底里的叫喊声中裸露她们的乳房,裙子向上提起,倒在地上。男人们带着迷惘的目光,跌跌撞撞地在躺着裸露肉体的地面上行走。他们用颤抖的手指把他们像被无形的霜冻僵的生殖器从裤子里掏出来,唉声叹气地倒向某处,以极为罕见的姿势和配对方式交媾,老头和少女、雇工和律师夫人、学徒和修女、耶稣会会员和共济会女会员,情况乱七八糟,空气中弥漫着沉重的情欲的甜蜜气味,充满着一万个兽人高声的叫喊、嘟哝和叹息,简直和地狱一样。

电影《香水》片段:(需科学上网)

<iframe width="560" height="315" src="https://www.youtube.com/embed/pkbPaDENvJ8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

最近看的多,写的少。大脑已经进入了春天,而身体似乎还在冬眠。这和身体的记忆规律正好相反 — 身体的懒惰直接影响大脑神经的活跃。

《且借纸遁》去年看了一部分,最近把剩下的部分看完了。这本书在我的[[书库|BookStore]]分类里的属性是“书的书”,也就是关于阅读的书籍,包括读书笔记、读书方法以及书评等。我对这类书很痴迷,一是因为爱书;二是因为有些书可能自己一辈子都不可能去翻阅 ,借此可以管中窥豹。这一点最重要,因为:@@color:red;“读过的书远远不如未读的书有价值”@@,也就是人应该知道自己的不知道,知道自己的边界在哪里;三是按图索骥,可以发现更多优秀的书籍。《且借纸遁》是葛兆光教授在1994-2011年间的读书笔记,涉及大概上百本书(其中大部分书籍是在大陆没办法阅读到的),不过这些书作为民间读书人 — 非学者 — 估计一辈子都不会去翻看的,例如《世界宗教史》、《中国战时学术》、《东亚史论薮》等,如果想拓宽自己的边界,看别人的读书笔记应该是一条途径 --- 直取精华。葛兆光的读书笔记似乎非常随意,不过也在情理之中,读书笔记本身就写给自是碎片化信息文本,加之思想的点滴记录和点评以及精彩语句的摘录,实用性高于组织性。相比之下,回顾自己这些年写的读书笔记,从形式上有过之而无不及,深度和广度上远不能及。再接再厉!

另外,我对这本书的书名很喜欢,比毛姆那句[[阅读是一座随身携带的避难所]]尤佳。

> 浏览的杂书成了眺望的窗户,本该坐冷板凳的人,也像《封神榜》上说的“土遁”或“水遁”一样,借了这些印刷的纸张,溜出去长长地透一口气。想到这里,便瞎取了一个书名,叫做“且借纸遁”。

下面的一些语句就是《且借纸遁》对一些书的相应点评或精华攫取。

!!! 翁同龢:《翁同龢日记》

> 士大夫官员则除了官场公务之外,依然是沉湎在三件雅人逸事之中,一是游山玩水访僧问道,三是吟诗作画校书读帖,三是搜集字画古书兼及会客应酬,偶尔把头伸出窗外,才吃了一惊,但是不久又缩头回去,照旧心安理得地过着旧时生活。

中国知识分子(士大夫阶层即古代的知识分子)这点德行似乎能找到历史渊源了。知识分子应该具有什么样的德行?见下一篇[[极权主义与知识分子]]。

!!!詹京斯:《历史的再思考》

> “历史”是由认识论、方法论和意识形态构成的,是“一种移动的有问题的论述”。首先,过去存在过的历史与现在书写或思想出来的“历史”之间的“空隙是实体性的”;其次,方法常常是最近的和最新的观念下支配或推演出来的,这些方法实际上是“自传性地对过去作解释的”,“取悦于他们自己”的,由权力支持而形成的建构;再次,理论与解释是意识形态性的,意识形态不过是说服、强迫、暗示,背后则是利害关系;最后,当“历史”被写出来的时候,它已经承受了来自家庭、学校、单位的压力,出版商与读者(字数、形式、市场、截稿日期、文体、审查者、重写的愿望)的制约,而“历史”被阅读的时候,又面临着“差异的世界”而无法使阅读固定。 

这也一直怀疑历史的真实性和价值,以及历史的真正作用是什么?这种意识流的信息(我其实不认为它是一种知识)最容易变形和被干扰和污染。

//待续//
我是被荣格(C.G.Jung)在心理学和认知科学界的名头(和同时代的佛洛依德一样伟大,且被容格鄙视。)以及这本书的名字吸引来的(又叫《新书》)可是春节到现在,我并没有读懂这本书,我不得不怀疑自己的理解能力以及这本书的时代性 --- 我不可能怀疑荣格的专业性。

《红书》在豆瓣上的评分蛮高,说明许多人以及读了,且懂。我也读了,却无从深入,亦五甚收获。我讨厌作者絮絮叨叨的写作方式,以及书籍结构的凌乱 (他不断地交替使用不同风格的语言模式,在记录和分析时使用的语言形式各异........三种语言风格代表三种思维模式,即报告式、反思式和浪漫式的语体风格交替出现,相互呼应,但绝非荣格刻意而为,而是他丰厚的文化知识底蕴的自发呈现.......
所有这三种文学语体都为心灵的提升服务),包括作者思维的支离破碎 --- 这样说也许不对,这本书本来就是作者的自我实验(《红书》被视为荣格的私人日记,在荣格去世48年之后,由资深荣格学者索努·沙姆达萨尼教授经过大约13年的精心编译,最终在2009年得以出版。
) --- 深度思维的记录 --- 换句话说就是内在自我对话和思维的文字世界,包括与神及想象的对话 --- 走入一个人的世界是何其难,所以看不懂应该是正常状态 --- 可我自认为在认知科学还是颇有积累的。

如:

<<<
1925年他回忆到:“那时候,我看起来就好像生活在我创造的精神病院里,游走于各种幻想的形象之间:人马座、仙女、萨提尔、神和女神,他们仿佛都是病人,我正在为他们做分析。每当我读到一篇希腊或黑人神话时,感觉就好像一个疯子在跟我讲述他的历史。”
<<<

虽然我暂时放弃了继续读下去 --- 我可能在某一天还会再看一下,但是还是有些收获。我从中了解到了深度思维的重要性,最近也在琢磨,是不是自己也来个思维实验:把自己的深度思维记录下来,然后回视、分析和整理,找出自己思维的逻辑、bug以及主宰自己的神。如容格所说:

<<<
我现在必须接受我之前所称作的灵魂实际上根本不是我的灵魂,而是一套死气沉沉的系统。因此,我必须把灵魂当作一个遥远且未知的事物与之交谈,他并不是通过我存在,但我是通过他存在。

一个人的欲望摆脱掉其他外部的事物之后,他才到达灵魂所在的地方。
<<<

这可能是自我治疗的最有效的手段  --- 不是有病才需要治疗,而是需要思想升华,因为“意象的世界是整个世界的一半”
。正如容格的劝诫“我的朋友,更明智的做法是滋养灵魂,否则你就会在自己的心中养育出恶龙和魔鬼。”除此之外,容格的一些观点应该记录下来 (部分内容):

荣格认为古代人缺乏定向思维的能力,而定向思维是一种现代习得的能力。当幻想思维停止的时候,定向思维便开始出现。


<<<
魔鬼如是说:要鄙视所有的理性和科学,因为它们是人类至高无上的权柄。

终极意义并非意义,也非荒谬,它是意象和力量的合一,将堂皇和力量糅合在一起。 终极意义既是开始,又是结束。它是跨越和应验之间的桥梁。

深度精神甚至还教导我把自己的行动和决定都视作依赖于我的梦。梦为生命开路,即使你无法理解梦的语言。(我总觉得这有点扯,可能是作者时代局限性造成的。)

心的知识能够产生更深的洞察。(注意是:心的知识)

但是我如何获得心的知识呢?你只有通过活出自己生命的全部,才能获得这种知识。

灵魂所在的地方,学术知识是无法到达的。

我必须认识到自己仅仅是灵魂的表现和象征。从深度精神的意义上看,我是自己的灵魂在这个有形世界上的一个象征,我完全就是一个奴隶,彻底被征服,绝对服从。

只要我接近自己的灵魂一步,都会引起我的魔鬼、嚼舌根的小人和搬弄是非之人轻蔑的嘲笑。他们嘲笑我的原因很简单,因为我在做奇怪的事情。

混乱和无意义是秩序和意义之母,意义是那些已经成形且不会再形成的东西。

如果你将秩序和混乱结合在一起生出圣童,也即是超越意义和无意义的终极意义。

灵魂拥有自己的独特世界,只有原我能够进入到这里,或者完全成为自己的原我之人才能够进入到这里,这样的人既不在世事中,也不在常人中,更不在自己的思想中。(我觉得把“原我”翻译为“本我”更好。)

我们把自己绑定到目的上,却没有注意到,实际上,目的就是局限,是的,它是对生命的排斥。

你越聪明,你的单纯就越愚蠢。在单纯方面,绝对的聪明就是绝对的愚蠢。聪明能够征服世界,但是单纯征服的是灵魂。所以,若想和灵魂在一起,请坚守精神贫穷的誓言。(这句话说的真好。)
<<<

PS.整理完这些内容,我又想继续看下去了。😢

<<<
整个故事充满触人灵魂的哲思,主要讲述了少年“卡尔文”的寻圣之旅,因为与现实生活格格不入、脑海中充满着奇思异想,这个在常人眼中与众不同的少年,用自己的方式,展开了自己的“朝圣之旅”,开始了自我心灵的成长与进化,最终在追寻的路途上,达成了与自我、与世界的和解。
<<<


这本书是春节期间一气呵成看完的,迟迟没有写下点什么。不过这样也好,过一点时间再回忆一下,可以真正检验书之心迹深浅。

《寻圣光的人》和之前读的《[[牧羊少年奇幻之旅]]》、《[[柳林风声]]》是一类书:简单而又意味深长、纯净而又充满幻想。我喜欢读这样的书,可以在纷杂的生活中寻得片刻安静,就像在潺潺小溪旁恬静的小憩;可以在烦闷的世俗中得以净化,就像梦中童年肆无忌惮的奔跑和欢笑。读这类书是一种最佳休息方式,因为可以带入一种轻松梦境。

书中故事的主人公 --- 患有精神分裂症的少年卡尔文 --- 最终与自己和世界和解,寻得圣光,回到真实世界。我们自己何尝不是每日都在挣扎在自己与社会相互和解和妥协的边缘,自己战胜自己则和解,自己被被自己打垮轻则分裂,重则行尸走肉;自己和世界和解则阳光明媚;自己被世界征服则得过且过。和解或妥协与否的关键是寻得自己的圣光,正如书中主人公的自我救赎之旅,我们需要在生活中不断砥砺前行中寻求自我救赎,方可瞥见圣光。
@@.note
''Keywords:'' <$view field="description"/>
@@

<<<
《为生命而阅读》(不输《岛上书店》的初心与能量,口碑媲美《活出生命的意义》) 献给每一个在生命旅程里默默前行的你:阅读让生命充盈,让我们勇敢有力。
<<<

上面是《[[为生命而阅读]]》前言中的介绍,溢美之词有点言过其实。且不说作者的读书品味如何 --- 读书其实没什么品味,自己喜欢就好,推荐的书稍作了解即可。不过我喜欢这类书,在我的书架上特设“书的书”专区,是快速了解一本书并找到好书的一种途径。

作者在《为生命而阅读》中共推荐/介绍了26本书,有几本书我已经读过,如林语堂的《生活的艺术》、村上春树的《当我谈跑步时我谈些什么》、安托万·德·圣·埃克苏佩里的《[[小王子]]》、以及威尔式的(Orwellian)《1984》。也在书中选出几本想读的书:《[[乔凡尼的房间]]》、《[[所罗门之歌]]》和《[[箭术与禅心]]》。其中《箭术与禅心》应该与《[[禅与摩托车维修艺术]]》类似,讲生活与哲学。<<footnote "①"罗伯特·M.波西1974年的经典之作《禅与摩托车维修艺术》,一个关于父子两人穿越大半个美国的骑行之旅。所以我错误地以为箭术是写在摩托车之后的,但事实正相反:关于箭术的这本书是1948年出版的,正是波西格古怪而又奇妙的书名的灵感来源。
">>


比较有意思的是,作者威尔·施瓦尔贝比较推崇林语堂,不仅把林之《生活的艺术》位列首推,还在其他章节中多次提及。作者是喜欢林语堂倡导的那种慢生活。我想作者还是不了解民国时期中国的社会环境,也只有像作者这样的美国中产阶级才会喜欢民国时期林语堂的那种“精致文人慢生活”吧。

下面是一些书摘:

<<<
不管什么时候读书,我都时刻提醒自己注意这些回响、联系和希望。这本书是怎么完成的呢?这本书和哪些书有相似之处呢?它让人想起了哪些书呢?

读书和小睡,人生中最让人愉悦的这两件事,相处得相当融洽。阅读被小睡打断的最大收获就是,我经常能够被潜意识带入书中的场景,这极大丰富了读书的感受。

无论何时,只要有可能,都选择未知而不选择熟悉,因为“正是未知,和它所裹挟的所有的失望与惊喜,才是最有价值的”。

“假装成功,直到真正成功”(Fake it till you make it)

该书作者悲惨的结局让这个故事更添深度:安托万·德·圣·埃克苏佩里是一位著名作家,也是一名勇敢的法国飞行员,他在二战期间执行某次侦察任务时失踪。他的飞机跌落在地中海某处,那时他正从科西嘉(Corsica)飞往纳粹占领的法国。事故发生在《小王子》一书出版的一年零几个月之后。

在奥威尔的论调里,就被称作自由。使你自由之物即是限制你之物。

大哥和他的口号笼罩:战争就是和平、自由就是奴役、无知就是力量

张潮关于人生不同阶段读书的感悟:''“少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之浅深,为所得之浅深耳。”''

<<<
@@.note
''Keywords:'' {{!!description}}
@@

我们将事物发展变化中面临的各种可能性集合称为这个事物的''可能性空间'',它是控制论中最基本的概念。控制,归根结底是一个在事物可能性空间中进行有方向的选择的过程。

改造世界,即通过选择来完成 --- 选择可能性空间。

控制的量化,即控制能力:

<<<
如果某一事物的可能性空间为M,实行控制后,可能性空间缩小为m,那么控制能力就是M/m。
<<<

一切控制过程,实际都是由三个基本环节构成的:

# 了解事物面临的可能性空间是什么。如一个人得了病,他可能好转、恶化、死亡。
# 在可能性空间中选择某一些状态为目标。如治病的目标是使病情好转。
# 控制条件,使事物向既定的目标转化。

控制的方法论称为控制艺术,如随机控制、有记忆的控制、共扼<<footnote "①"诸多学科中的“共轭”一词,都来源于英语单词“conjugation”。“com”即“共”,“iugāre”即“轭”。因此共轭这个词实际是一个外来词。而两头牛背上的架子称为轭,轭使两头牛同步行走,共轭即为按一定的规律相配的一对。
">>控制、负反馈控制等。它们是一切复杂控制方法的基础。

<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201901]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201902]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201903]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201904]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201905]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<<tabs "[[2019年5月日志]] [[2019年4月日志]] [[2019年3月日志]] [[2019年2月日志]] [[2019年1月日志]] [[2019读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>   
"""
2019年1月2日 提前安排阅读这本书应景
1. 《[[黑天鹅]]》如何应对不可预知的未来@@color:green;^^★^^ @@

2019年1月3日 新年无新事
2.《[[卡夫卡小说全集]]》@@color:green;^^★^^ @@
3.《[[不成问题的问题]]》

2019年1月14日 错把异乡当故乡
4. 《[[对赌]]》

2019年1月18日 回京
5. 《[[控制论与科学方法论]]》

2019年1月26日 放假
6.《[[香水]]》@@color:green;^^★^^ @@

2019年1月29日 春节囤书
7.《[[尼采的锤子]]》
8.《[[我读:温一壶月光下酒]]》

2019年2月2日 腊月二十八
9.《[[混乱:如何成为失控时代的掌控者]]》
10.《[[红书]]》

2019年2月4日 年三十
11.《[[寻圣光的人]]》

2019年2月5日 大年初一
12.《[[杂草的故事]]》

2019年2月6日 大年初二
13.《[[耕种 食物 爱情]]》

2019年2月8日 大年初四
14.《[[为生命而阅读]]》

2019年2月9日 大年初五
15.《[[名著之前言与序言]]》@@color:green;^^★^^ @@

2019年2月10日 大年初六 “且借纸遁”生活结束
16.《[[且借纸遁]]》(下)

2019年3月26日 一波三折
17.《[[植物学通信]]》 

2019年4月5日 清明艳阳天
18. 《[[50:伟大的短篇小说们]]》@@color:green;^^★^^ @@

2019年4月11日 要变天
19. 《[[清官册]]》高阳

2019年5月1日 节日恐惧症
20. 《[[毒木圣经]]》
21. 《[[白鲸]]》@@color:green;^^★^^ @@

2019年5月3日 房间里的旅行
22. 《[[大自然的社交网络]]》@@color:green;^^★^^ @@

2019年5月5日 孤单的房间
23. 《[[世界顶级思维]]》
24. 《[[地理学与生活]]》

2019年5月9日 煎熬
25. 《[[博物人生]]》

2019年5月15日 等待的日子很煎熬
26. 《[[笑林广记]]》再读
"""

--

[[2018读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[读书检索|Book List]] | [[读书日志|Reading Logs]]

//注: 标 @@color:green;^^★^^ @@符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[50:伟大的短篇小说们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="RiZi LOGO"><a href="https://rizi.me"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=10%></a>
</span>



<<<
@@background-color:#f4f4f4;
[[本站|https://rizi.me]]//(备用[[地址|https://platoer.github.io/rizi/]])//主要内容为[[读书日志|Reading Logs]],逻辑结构以每本[[书|Library]]为[[主题|Album]]聚合。平台基于[[TiddlyWiki|http://tiddlywiki.com/]],借助[[Oneindex|https://github.com/donwa/oneindex]]存储在
[[OneDrive|http://onedrive.live.com]] 上,利用 [[Rizi Box]]作图床,每天00:00由[[Microsoft Flow|https://asia.flow.microsoft.com/zh-cn/]]自动更新,通过[[Cloudflare|https://www.cloudflare.com]]分发,并支持 `Markdown`语法,全程无忧。最佳效果请科学上网并使用`Chrome`或`Firefox`浏览器。本站提及的书目如有需要请联系。 
<$button message="tm-save-wiki" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
<span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/save-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>
</$list>
</span>
</$button>
@@

<<<
<<fa fa-telegram>> [[Telegram阅读频道|https://t.me/s/GoReading]]  | <<fa fa-telegram>>  [[ Telegram 阅读群组|https://t.me/platoer]] | <i class="fa fa-weixin"></i>  <$appear type="popup"show=" 公众号"  keep="no" $state="sticky">
[img[https://rizi.me/img/Wechat.jpg]]
</$appear>


{{Coze}}

<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/follow_button.html?screen_name=coze"  style="width:300px; height:20px;"></iframe>
\define thisSeriesSelect()
<$select tiddler='$:/temp/newbook' field='series' default='None'>
<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisGenreSelect()
<$select tiddler='$:/temp/newbook' field='genre' default='None'>
<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisAuthorSelect()
<$select tiddler='$:/temp/newbook' field='author' default='None'>
<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisLocationSelect()
<$select tiddler='$:/temp/newbook' field='location' default='None'>
<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisTagSelect()
<$select tiddler='$:/state/booktag' field='selected_tag'>
<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

Adding books:

<!--Title-->
Title: <$edit-text tiddler='$:/state/newbook' field='book_title' class='tc-edit-texteditor' placeholder='Book Title'/>
<!--End Title-->
<!--Author-->
<$reveal type=match text=true state='Library Tracker Settings!!show_author'>
Author: <$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>
<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>
<<thisAuthorSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/> (<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/><$button><$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add author' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Author-->
<!--Series-->
<$reveal type=match text=true state='Library Tracker Settings!!show_series'>
Series: <$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>
<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>
<<thisSeriesSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/>  (<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/><$button><$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add series' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Series-->
<!--Genre-->
<$reveal type=match text=true state='Library Tracker Settings!!show_genre'>
Genre: <$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>
<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>
<<thisGenreSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/> (<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/><$button><$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add genre' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Genre-->
<!--Location-->
<$reveal type=match text=true state='Library Tracker Settings!!show_location'>
Locaction: <$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>
<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>
<<thisLocationSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/> (<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/><$button><$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add location' setTo='notnew'>Done</$button>
</$reveal>
</$reveal>
<!--End Location-->


<!--Tags-->
<$reveal type=match text=true state='Library Tracker Settings!!show_tags'>
Tags (it will always be tagged with `Book` by default):<br>
<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>
New Tag: <$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>
<$button>Create Tag
<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>
<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>
</$button>
<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>Done</$button><br>
</$reveal>
<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>
Tag to add: 
<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>
<<thisTagSelect>>
</$set>
<$fieldmangler tiddler='$:/temp/newbook'>
<$button>
<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>Add Tag
</$button>
<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>
(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)
</$fieldmangler>
<br>
</$reveal>
List of current tags:<br>
<$fieldmangler tiddler='$:/temp/newbook'>
<$list filter='[[$:/temp/newbook]tags[]]'><$view field='title'/> <$button>Remove Tag<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/></$button><br> </$list>
</$fieldmangler>
</$reveal>

<$fieldmangler tiddler={{$:/state/newbook!!book_title}}>
<$button>
<$action-setfield $tiddler='$:/temp/newbook' title={{$:/state/newbook!!book_title}}/>
<$action-sendmessage $message='tm-add-tag' $param='Book'/>
<$action-setfield $tiddler='$:/state/newbook' book_title=''/>
<$action-setfield $tiddler='$:/temp/newbook' tags=''/>
Add Book</$button>
</$fieldmangler>
<ul>
  <$list filter="[tag[Album]!<currentTiddler>!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>

</li>
  </$list>
</ul>

增加了`alink`宏(
$:/.tb/macros/alink),也就是别名的超链接。
在此Tiddler的栏位增加此格式` alink:|系统更新|System update|update log|系统更新日志|`,即可实现。


```
; test
: <<alink 系统更新>>
: <<a: "System update">>
: <<a: 更新日志>>
: <<alink "update log">>
; proof
: <code>{{alink(别名)宏的使用!!alink}}</code>
```
实现效果:

; test
: <<alink 系统更新>>
: <<a: "System update">>
: <<a: 更新日志>>
: <<alink "update log">>
; proof
: <code>{{alink(别名)宏的使用!!alink}}</code>
<<<.tc-big-quote
人类进化之树,历史是梗,艺术是花,今日是果。--- 郭子
<<<

<$list filter="[field:topic[Art and History]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<<tabs "[[Book List]] [[Add Books]] [[Manage Books]] [[Library Tracker Settings]]">>
\define thisBookList()
<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>
	<tr>
		<td>
			<$link to=<<CurrentBook>>>
				<$view tiddler=<<CurrentBook>> field='title'/>
			</$link>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=author/>
		</td>
		<td>
			<<thisSetLocation>>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=series/>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=genre/>
		</td>
	</tr>
</$list>
\end

\define thisBookList2()
<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>
	<tr>
		<td>
			<$link to=<<CurrentBook>>>
				<$view tiddler=<<CurrentBook>> field='title'/>
			</$link>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=author/>
		</td>
		<td>
			<<thisSetLocation>>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=series/>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=genre/>
		</td>
	</tr>
</$list>
\end

\define thisSelectThing()
<$reveal type='match' state='$:/state/newbook!!sort' text='author'>
	<$select tiddler='$:/state/newbook' field='selected_type'>
	<option value=''>
		All
	</option>
		<$list filter='[[$:/data/BookAuthors]indexes[]]'>
			<option>
				<$view field='title'/>
			</option>
		</$list>
	</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/BookGenres]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='series'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/SeriesTitles]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='location'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/BookLocations]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
\end

\define thisMakeSelectedValue()
$(sortType)$[$(SelectedType)$]
\end

\define count1()
<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>
\end

\define count2()
<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>
\end

\define thisSetLocation()
<$reveal type='nomatch' state="""$:/state/Library Tracker/$(CurrentBook)$""" text='edit'>
	<$button class='tc-btn-invisible' set="""$:/state/Library Tracker/$(CurrentBook)$""" setTo='edit'>
		<$view tiddler="""$(CurrentBook)$""" field=location/>
	</$button>
</$reveal>
<$reveal type='match' state="""$:/state/Library Tracker/$(CurrentBook)$""" text='edit'>
	<$button class='tc-btn-invisible' set="""$:/state/Library Tracker/$(CurrentBook)$""" setTo='noedit'>
		{{$:/core/images/done-button}}
	</$button>
	<$select tiddler="""$(CurrentBook)$""" field='location'>
		<$list filter='[[$:/data/BookLocations]indexes[]]'>
			<option>
				<<currentTiddler>>
			</option>
		</$list>
	</$select>
</$reveal>
\end


If you click on the location of a book it will allow you to change the books location.

|Sort by |<$select tiddler='$:/state/newbook' field='sort' default='title'><option value='author'>Author</option><option value='genre'>Genre</option><option value='series'>Series</option><option value='title'>Title</option><option value=location>Location</option></$select>|<<thisSelectThing>>|
|Search by |<$select tiddler='$:/state/newbook' field='search_in' default='title'><option value='author'>Author</option><option value='genre'>Genre</option><option value='series'>Series</option><option value='tags'>Tag</option><option value='title'>Title</option><option value=location>Location</option></$select>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|

<$set name=sortType value={{$:/state/newbook!!sort}}>
<$set name=searchField value={{$:/state/newbook!!search_in}}>
<$set name=thisSearch value={{$:/state/newbook!!search_text}}>
<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>
<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>

<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>
Number of matching books: <<count1>>
<table>
<tr><th>Title</th><th>Author</th><th>Location</th><th>Series</th><th>Genre</th></tr>
<<thisBookList>>
</table>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>
Number of matching books: <<count2>>
<table>
<tr><th>Title</th><th>Author</th><th>Location</th><th>Series</th><th>Genre</th></tr>
<<thisBookList2>>
</table>
</$reveal>

</$set>
</$set>
</$set>
</$set>
</$set>
"""
''Kindle资源:''
[[Kindle 商店免费电子书|http://t.cn/RINodvt]]
[[Readfree|http://readfree.me/]]
 [[Calibre Library 数据库|Rizi Box]]  @@color:Orange;^^'' One Drive''^^@@ 

''杂馆:''
[[稀缺书籍|https://one.rizi.me/Books]] @@color:Orange;^^'' 自有''^^@@
[[网友书籍共享|https://www.dropbox.com/sh/szzwdj30okzkov8/EudV5r1UFF]]
[[自由之思想|https://github.com/programthink/books]]
[[一站书|http://www.yizhanshu.com/]]

''古籍:''@@color:Orange;^^'' 公益''^^@@
[[三家村公开版权精品书籍]] 
[[世界数字图书馆|https://www.wdl.org/zh/]]
[[早稻田大学图书馆古籍数据库|http://www.wul.waseda.ac.jp/kotenseki/index.html]]
[[哈佛燕京图书馆|http://guides.library.harvard.edu/Chinese?utm_source=Library+Staff&utm_campaign=9fca5a7bb3-EMAIL_CAMPAIGN_2017_06_28&utm_medium=email&utm_term=0_4bb25c0228-9fca5a7bb3-26352423#s-lg-box-6321879]]
[[书格|https://shuge.org]] ^^[[1|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6fjlEY3R6Qi1USjF3ekhRbENqc0tVTEM0dUcwakdfQ3plZG9INVFXWlllbHM]]^^
[[一些古籍PDF|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6UUdYUzRYOHE0R1E]]
[[古代艳本|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6fm52Zk9SdlFodVZxLVBLMjVQN3pBcjU3TEhOQmNmWFcwZkpOUE5yam5iUzA]]
[[中國哲學書電子化計劃|http://ctext.org/zh]]
[[世界历史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fldZeURHVUk1NWpxaHBLeENMajlBT2xWb0xZVjlDQnlJYmx5VUMtaXpDYkE]]
[[中国历史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fmdVLVJvTzU2WGg5MVg5dlh5dUtrei13YTZIUWFuaFRlcDFvQlk0LVZwS2c]]
[[二十四史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fm1iQnM0N0NQRkVCWTJHZVJfTjF4ZE12YU55VjMxTUUzcVJSU1JVY1pvVjQ]]
[[史记在线版|http://www.ziyexing.com/files-5/shiji/shiji_index.htm]]
[[诸子百家|http://www.ziyexing.com/files-5/zzbj_index.htm]]

''阅读工具及其它:''
[[世界历史时间轴|http://intuitionanalytics.com/other/histomap]]
[[汉典|http://www.zdic.net/]]
[[异体字查询|http://www.fantizi5.com/yitizi/]]
[[中国历史地图集|http://www.ccamc.co/chinese_historical_map/index.php]]
[[鸠摩搜书|https://www.jiumodiary.com/]]
[[Clippings.io|https://my.clippings.io]]
[[电子书管理 Calibre使用说明|https://cmmei.gitbooks.io/using-windows/content/Calibre.html]]
[[电子书在线转化|http://cn.epubee.com/]]

"""
''Bullet Journal''(Bullet Points),子弹笔记,简称bujo,是一套以简洁表述加符号识别的GTD+Note的结合体。由于对GDT很感兴趣,加上用Tiddlywiki一直在写笔记,所以大致浏览了一下此书,也顺便搜索了一些国人的使用情况,无甚突破性新意。比较适合时间较宽裕的文艺青年做规划整理使用,可以有功夫用笔勾画出自己所需要的Style。事实上,此套笔记或GTD策略,一个[[Google Keep|https://keep.google.com]]就完全可以实现,并且还可以通过时间和地理位置主动性提醒。



* [[官方参考网站|https://www.tinyrayofsunshine.com/]]
* [[知乎的评论|https://www.zhihu.com/question/50114499]]
* [[学习心得|https://www.jianshu.com/p/9dd8835761c4]]


//2018年03月12日周一下午04:16:11//

pre {
	background-color: #95A8A2;
	padding: 20px 14px 14px;
	box-shadow: 3px 3px 5px 2px #e1e1e1;
       border-radius:8px;
}
pre > code {
	color: #FFFFFF;
}
<h2><b>Comments Demo: Update</b></h2>

<$reveal type="nomatch" state="$:/state/Comment1" text="show">

<$button class="note "set="$:/state/Comment1" setTo="show"><img src="data:image/gif;base64,R0lGODdhEAAQAIACAAAAAOroMSwAAAAAEAAQAAACFYyPqcutAKN0tCYJrN4HRw5eWEiGBQA7"/> </$button>

</$reveal>

<$reveal type="match" state="$:/state/Comment1" text="show">

<$button class="note "set="$:/state/Comment1" setTo="hide"><img src="data:image/gif;base64,R0lGODdhEAAQAIACAAAAAOroMSwAAAAAEAAQAAACFYyPqcutAKN0tCYJrN4HRw5eWEiGBQA7"/> </$button>

这里没有什么秘密

</$reveal>

<<fa fa-envelope>> [[Email|http://scr.im/coze]]  
 <<fa fa-telegram>> [[Telegram|https://t.me/s/cozer]]  
<<fa fa-commenting >>   [[留言|Message Board]]
iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRQTFRFAAAAAgICAwMDBgYGCQkJCgoKDQ0NEBAQEhISFhYWFxcXGxsbcLTdSQAABFNJREFUGBkFwT17okgAAOApAqL1mZjUa4LWifmo9nbPTezwY2CGa4gRRCpcA0KqqAGBys1mBK00CYK099z9vntfwPS4TD21ttA49vV4kN9v4v2NIPkIQJ5KZ4rJ8N1QzNmcIOTIRF2f2zMAu5FaCh+VkFE/MCmgzXJZ+XcRYAb0L4VpCM8QZ5tX823DYSx9vqz3pyKYjN3DJDa8nMP1O4VoMu5R81cSHxFwYTT99A959MifJVuIL9dtQ8nxC9MEzhtjtFzjWpyIBu1NY4ESpHRJIwn4XR/l05kn3yiLqFdQJ7BPL2d9kwWEsbjIysmvflpz9CihV4sI1dZvAzDKxGL4jpPCvAvRbf0eISa6Xw3YOai4i/6ctRaxVXa7Dmbnf+K7vLAxHABhZdfO/r4WOQHX0LOzrD++a1le7IKwtXLZeOOkB+RnFJzD1icpwmeZz4EVm+iGT5Gtu6yOpRv3C/9V1s7VoQoeHSFfn3n7MtxgpfY02gfF+iZANyE4jZpZVsyaMDrhpUBk4EZ1iushhACFVaybtzSRTLnsDvnk2pjw8Ymig+A34o/Rdo7O42+Ok1Mk0S4HP6NdAdhUZyOnRX6T2uWk66wO/uMC/5D/7QBp5dIvUzM4jX83IjZd9Hl6/a7hggkocZrwJWc6hrTWjrJjcfMk02GzroGX+FLgMjmXto097S0gX8JD0rsUfgGPMztl+SGdl/ddFd3u2hAyclv5ZIB1td66Qd4chnyZ17WIiiXDqeIZAd8VrWy1ZSWfvroZtX8W/Sp8IHJOA/nlM4rqsBPHZbEZ3eZTHeLr8UjeA1ll95KhHNlvPbdmv/4I2dVmvbuQn8HL5DMrat+R04DTtN9I37yM8bhBWgIpJXKhmEtmoXeAW3FwZ0rLlDWGMfjIyMlasj6vex3V+Mvh0pgevCsWG4CrcVcmZ+rzwD2Xm6vkwBm9wKvoFSKwEinvJ9lX0QTxrLzwZIoMic/ccSCQiF2A+sA7QSNFpf2HQKGFexHSQMyRd7K+2T3PA2bO4R85Q0fq6XqLgS6HBYubi5TdhC79sI1wJXg1dqUI5PFst7qDi9SqiF3oflFarl/D7YwAFVd3LUP9Q7mvryqWfiuUrI5qUwIHIsm/O7eHxvzKbffm5cYvopTs9wDlAKw6C0iO7WYfH4mtp7jhT6x13v5HA5xhXoQttLzg9V1MibN+ygojnFAxOPY/VLUWDi0jJ0tof4E4AeXJxx4D3K/IM807grpoVxNd7LNwYg0Y/AHGOiR0MHX56v7X7im/3qSk1J8oYwqgi84wlc+0WWTn603LK9icYxWCTgO8r8US34ZaSZnKqB70cEwlDkYUBoxzr5m1aBG7VGMaj88FbhBSLgctIDtH3tddQFnfiF10hiuVgVMHs44EglcjZlezhFTxUB1TzldZO+4sOk4Z4Jo/44VTxKnw0FgQUiZTc3+Y6Bi0VVh2JGxWkjbOLvpbgmm5FcNS+j8czfGwA40N7AAAAABJRU5ErkJggg==
''Decision theory''(决策论),是一个交叉科学,涉及数学、统计、经济学、哲学、管理和心理学等学科。它主要如何进行决策,以及如何达到最优决策。其目标是帮助人们进行进一步良好决策的工具和方法论。常见的如启发式决策,典型实力就是赌徒谬论 <<footnote "[1]"赌徒谬论是错误地相信一个随机事件受到之前的随机事件的影响。例如,有百分之五十的概率使一枚硬币出现正面。赌徒谬误的表明,如果硬币出现反面,下次它翻转,出现正面。这是完全不正确的。">>。


!! 结构
<<textSliderNoButton "''[[决策过程|Decision theory]]''" "* 五W问题(Asking the Who, What, When, Where, and Why Questions)
* 反置 (Invert)
* 正确与非共识
* [[黑天鹅|黑天鹅]]
** 高斯分布(正态分布、钟形曲线)
** 大数定律
" >>
返回[[思维模型|Thinking Models]]

!! ''决策流程''(宏观的[[Thought Framework]]):

*认识问题
*# 系统1:(基于[[PKM]])直觉输出
*#系统2:复查
*#*Who, What, When, Where, and Why Questions
*#*定义问题
*#**降噪
*#** 属于黑天鹅、灰天鹅还是灰犀牛
*#//''关于问题:''目标是什么?核心问题是什么?可不可以量化?量化的上下限是什么?//

*分析问题
**拆解问题(哲学:还原论,见:[[尼采的锤子]])
**#问题分析法:思维导图、鱼骨图法等
**#问题量化
**#问题同构与自相似
**#事物的隐结构与隐秩序
**#复杂系统变动:勒夏特列原理<<ref "[2]">>  、正反馈与负反馈的交错 <<footnote "[3]" "好的越来越好,差的越来越差">>
**分析问题
**#分析方法:[[Mental Models]]

**//''关于分析:''有哪些有利因素?那些可以利用的资源?有哪些不利因素与阻力?//

*设计解决方案
**决策
***决策工具
***#SWOT分析
***#加权平均分析
***#[[决策树|Decision Tree]] 
***黑天鹅、灰天鹅还是灰犀牛思维解决
**//''关于解决:''时间和空间的要求是什么?事情是求效率还是求公平?如何照顾参与的人?//

*行动



!!! 正确与非共识
独立思考的重要输出结果就是非人云亦云。大部分人的观点并不是代表着正确,也就是人数的多寡并不是判断正确与否的标准。共识只是一个民主概念。所以,在大多数认为的情况下,要保持警惕。在金融股票市场以及红海市场,做到正确而非共识,才可以一骑绝尘。

[img width=60% [https://one.rizi.me/Photos/webphoto/zqyfgs.png]]

!!! 反置 (或曰倒置 Invert)

芒格说:“Invert, always invert”。

何谓“Invert”?其实就是中国古话说的:“有所为,有所不为”。有所不为是为了有所为,通俗的说就是“专注”。



-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@

<<footnotes "[2]" "勒夏特列原理(英语:Le Chatelier's principle),又称平衡移动原理,是一个定性预测化学平衡点的原理,其内容为:
化学平衡是动态平衡,如果改变影响平衡的一个因素,平衡就向能够减弱这种改变的方向移动,以抗衡该改变。
也就是说,对于一个在某一个特定条件下达到平衡的体系,假设这个条件改变,这个平衡就会朝减弱该改变的方向移动。
这个原理只能用来定性判断,不能进行定量计算,不能首先判断平衡是否处于平衡态。

例如:改变了压强,返回的却是温度、浓度、体积等另外维度上的因素的反噬。

组织,公司,社会:你压制了一种因素,别的(许多)不同维度的因素就会反噬以减弱你的改变。但是这种反噬不是线性的,它是以整个系统的级别的变动来表征的。系统发展的本质就是:从一个平衡到另外一个平衡。">>


<$button message="tm-close-tiddler">Close Me!</$button>
决策论中 (如风险管理),决策树(Decision tree)由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划。决策树建立并用来辅助决策,是一种特殊的树结构。决策树是一个利用像树一样的图形或决策模型的决策支持工具,包括随机事件结果,资源代价和实用性。它是一个算法显示的方法。决策树经常在运筹学中使用,特别是在决策分析中,它帮助确定一个能最可能达到目标的策略。如果在实际中,决策不得不在没有完备知识的情况下被在线采用,一个决策树应该平行概率模型作为最佳的选择模型或在线选择模型算法。决策树的另一个使用是作为计算条件概率的描述性手段。

机器学习和数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

"""
一个决策树包含三种类型的节点:
决策节点:通常用矩形框来表示
机会节点:通常用圆圈来表示
终结点:通常用三角形来表示
"""
[img [http://p1.cdn.img9.top/ipfs/QmNXTNFwgTe6s31gSyrrmf2BL5hrQ5WriTF72kcjjAZVU1?1.png]]

!! ''实例:''

<$details summary="根据纹理判断一下是好瓜还是坏瓜" class="notification">
[img[http://p3.cdn.img9.top/ipfs/QmZURGFfWf7LCKxS1VJbga2aKBsftnKvtvNQXyh4tXwMhd?3.jpg]]
</$details>

!! ''建立方法:''
* 以资料母群体为根节点。
* 作单因子变异数分析等,找出变异量最大的变项作为分割准则。(决策树每个叶节点即为一连串法则的分类结果。)
* 若判断结果的正确率或涵盖率未满足条件,则再依最大变异量条件长出分岔。

!! ''参考:''
[[Introduction to Decision Tree Learning|https://heartbeat.fritz.ai/introduction-to-decision-tree-learning-cd604f85e236]]
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAgmElEQVR42m3daY4kx7GFUd//ziiKIimKSxBHDRQ30A+38A7wwVA/srsiI8IHG64Nbu75fvnlly/ffvvtl19//fXLn3/++eW///3vl2+++ebLzz///GX39t1f//rXj/v/+te/vvznP//58re//e3Lv//9749n//jjj4/rf/7zn/vu47m///3vX3766afd+/j+q6+++mjvf//7397Z87u3Z9feR/+//fbbx/3ff//9i/uu//KXv2jro93vvvtu7+3ex3s//vjjvt93e2b319/GvjGv/fW7z+a08e37vf/x+f7773dv/W0Ou15/a9N4dt+YjG/P7hp9tLHx7h6arb2NZ+8Yz/7Wxwe9tf82+D1k8mt8L29yG/we3iR3fx2YzF4eMda45/f+rhF7g9rg9/yeXee7j3l77+uvv9699bXv1v6+3/trh3Ds83H/hx9+QPhNYtfrd3/vnTF/z+27jzGb39rfe2PervfMPuufsGwc//jHP/bc/jZ+hN31xrP/196+3/P+3juj39raXDfGPb/rPVN67tm1uf4/xur9t4s9uMnvJmLrHOE36HW25zdgmrF7+5skbCAjjskiJEkkZWtj9wnC3id5u7drzNb/iI8462fM27sIvvFh1r4fsfaeOWw+CGF+BG/XY6a5r/2NZ/fXhvlj1ua4a+9uHujj+WnKniOMu97Y9g7N2/XapLlvN3ROrTfgTYak7zNJ20sdDM3Z8yPWnt9AqCFm7LPBkJy1s/ZI5tohyZix9vc/zcQM0IbY2iS55kNyPT/N2N9rf+0gzuYCFkEgSd+9PbN+CA9NXHv7mzCOmJi572k+bSryEEYQN2jdeNf/g+GIj5N7iPTVhpTYa5Dk7/k9o/M9u/tszr73zoi7gSDwmLH/1xZJREywtfYRdM+TrE2YTTGH9bd2NgaSt/cxfJrAfu37zR/E0Exasmvjp92Qwfw9j9mED7PWH+E0H1oMacDeG3GolJswfd9RKzi4a4MlCYgLRgwEBhd2alOouYmPOJO8TQyurn3901SMAUsIwQYY+65HDFJpPHtvbYLBfc8oM/BsDhuyDxhau3t/8wRjYGf9r28CAqY7H+9qX3+jwXOxztyk+iPu/sZ9BgtMIc4aB1sGtmd2DU9JHi0haYRh17tPE2EsSCpzEQ+s1nsDm2CLtzUikMSOH0yZv7/3DAdh1+ZHi8sMUEQzwNTe33uYz8bQbjaaU7LxPMTfw/t7g+cK73+wQ3K4grvGiH1oDrUkuWUWyOP97FkE22SoLRuzd0kj72j3dg2j9z7NBQu8v/VPgHiHNIVrXuYRRphe2N34zW39bf60eh/9jzYcmr1Hs8YcY+dg0ArCu+tXtQIjXiYJI86+h9H86jW+zwa//2kbTXFNk1xz9WAoZiHO7oNABpAk8vN3D3NpsjEVlozX3MBEmS1uMMc6EIhFuMB6DTTNIe0cDAyvJolz0Iswbv7r83lYA5vcBgHnSNruMZD7X2fiBjalgyUpfHCYT2pJsokgJkgBmzyR/e9+bR6IMH4wgVmYT1JpOdjYOMx/xOLMcDg8y6aCOQacK1t6YTZvatdgX0Co/V0TyMf47oLrBXp4Qxrj6noGhiN2B4tZbASY4FobLIjRHtjaNWIbrPd3zaFY//uba0o49sxgbtegkiSvDzAMIhsX8PDWHi0k2a7BPMHhbdFKmmwshJNnp3+0Mf7HTjBIDfpIdoM4HsmNWA1uE6G21BgzMIIrrW8RLWPHtUVsrrL7bJSx8H72P2jkQGAoJNAn70n7YJXk75pby4BzUIQKu4fgbC6nA7Hd52AQJsJbG7Vnn8ZwfRPgDfD9qS1Ngcm+A0s18PsfcUm+ASEmI7f+1xfYG6ysXc8zwIQD7JFEMFHXVVzBpoGNffSHWea3tjCb628+3H6ST1ibbmGgMbuutrkJqo2XZmr/MSj7eLhqJIJu7meTaUSOMVw9je8ZsMDm8OY8T635+jCdneCK+w6MSZGIo/TRIK1xjv4xu94NZvB+CNt1KBCP8Aoq0WfMLJIIso1tzzdOa2K1uSxqxkCRLAbXwzBbVE4yBGnUrgaxmsTvpvbiFP1Xc5qlZVPEBQzmJofwiMHeyK3teQLSdAXvipYRNhkK75vf+pSR4EC0fbCN8cazfjDT+LnW5oe+H8x+u6CWOvKygXAVdSSOwGlZTFK353YNNqQ36p1wJatJtKY2A0Gu5AoiZYXrLWI+N5l3CNJ2LQgENe6DSukU3pw4hYPAYSC8hAuUgT3u9dovbOsflKH/202SJfCr61k1NGFqXAym8iSd5wFWMA7mG1wleR/XjKm4hDcDNsQortm7XXsew8YsxG+uax9BIK02v9qUEZNgcSC47hyWXqOXDEGD4K6HNAXPHj3Eox0MMg+gKW6JMQbrMk8iDQySVMzjp5M0xGxiEDExRBBK22RlS2yEkJsimRyQGlCutj5LPOslu8ZcDgN0oAldQhCx7z6byICvvX3PG9WeMfE+eXSPFF4DI6ii0iZHUsAAZpA0kIXzTZcwqMVQbYvowV5hEO5b7AGrEpHGLyjk+rKJBMj4QYVcE++ScDWiNj82C6zC/LXNTrhu0NwIHkzVwGM8V/2RNpgH56k1XCxsNUvK4/B8XWP32BRqyhsq7GkPQdmYZpFBlPGQ+n0ErTIMdcUbR9wUfIWRYDRIbVyibxmEzpfNghTN4povYRN3sVHoOSY9gzE4EWPDe343b2GDuwbVwNgUhOiyKs0TAYOxYjBYoAU1+PXjBWU0GfO1x15hLmehBpw7bc0eM6s5YBhkCppro5pbEwdh9BU2NgXS3HTQE+FqTPjPW4D5PKp6W7UplRSQdiUJZvLsZE277An2EJhNoAkcBHag3lgTpbRJfwo2umxazaW9JBdDG9HzFhFanFHNYxNoN2bKWBiPPiEJ6H37h+SL2DFIVhRnGVgdCip5JDrXRjG5a9yeEXdIHJos6W9QKcIHU1xxEFdJbxxwI2hjacSOGGBKn5jLxrCxZQ7Ib0HFTe+AUjC8T0MNbaw/ccgmA99E3Cy/0iBqZrCuEQMGw8iu3IE10kKTYDbmVxhMtCuBCAKGBHKYR9JJ3qfpihrsCxuYB5ZpMpuAoF1voen64jDIxXXZmTCZHzvHwD8wIgi83gDJADsGf+uyEEudlLyTrCy1d5+U1RU1GcQjaYIwcQ2Yw3AwxgMCczfoxQDMdC3R14hb0KeuTDqfw1MksB7EAWpQyTXee4LqBrHGx1N90gU6E4EbIIO6lzGHVOFsbEwjZBEvKYKZMrQ0R3tyTXUouI4IUoPZDAK7w1sMMT6HrVaDgC1IQLKtyRemMR961CDX24IUNAf6sCEcGpqHHo+x3IXJGjzNqAElxWwCteX3k9J6a5gJtmC0dIiItjYLc1qQ0PULsGrscm018DC+K53GU2Eyvo3HuyU+ZjHgDDJm88Z4f42bCIf7/hZHgXDMfV0MqiRSIzbD/bp6ouNW4IG5urYG0wpHsKH9BnVdbDJBdVyYLSVvwQdGc1+5orw/DoHJXwegWd9mgcGqZV0eEc03pwatXUZuuoVWs1G0EH12/XCeWoMB6xNgooPFDL79XU/wvnphriTpcN0CBDDBppGienPskvQJqCyxeUsYa7L6Z5MIlpQ/T6sZBn1e4QLbBJDNravdrLT7AkWa03QOZXjqiBCjQZ8IsnGJdEWDoBp4cQeMlVhrip0kd6WxET7NuQUDhKE2zPPsXHNdrStj4MGoOZa4lqkFkDXIjZtqgwR92uCt+jSLjvlgefddo/dD3BYSU0sGtgbvVghiJFcUvnaNvukYnpxqlZvFbcFF1w9oDma1TqwpcZq9D83lWtJcxBSE1nvEODDGla1NNN8aaPdrg3hbXZIwVsJ5l80fNYWRvAEGmLdgMI0zmr6QUm4KmtaYPFhcP+6LmBtB0yzEam6JpnEdtXmr1sGgQE/cRBvBGulvkCnoA1FcZYwk6XcZGYSDoeYC5bKaeyNsdUAeYvFGaAq8lsshFSS7iT4pbtLKAN81ch6S9AycB1sG3JU5BpBU8e5onfE2XYJ4DDZNwzDCRvLB9K45OI2LuP68SzDUxaU6EJaxGwS6t0/NgCCZZj7eSsP/ZillTRlI3gNNkO9HHLCDePVeWiGI2FYmQR/Ya1AJgmgKyST5PCvEwwgwa2xsXmHF8zw6/bWqnuA1iL65vAbVdZWbNXcNhfahuWDy4aIgjlt4MZd3xD5IRxgYbw1eszE3qERYBQ5ghWsKz1srTGCa+4Lx+qq31iI2xhJzrF905RGut/SnNpJBB0uEtTDWzUgYIM5AcHEMb7TtY9bDXX41D6DVJpUUndGUegv1bhg4zNIe1aRJZRbiKA265Zg3MWkLHuYVRqVnWpvMuMLsFtHBdH2Q7NbmYqaCC4JSyW+5qnvue747qcxXuuntIa6aQIUkGTDOd7GIFNIMhDcZhOwWB+VDiAParMcgKAMHZ2UAbnkn6QO73VyDuQw0TZQIbeKUTWHDCA+DXJskt4WwVxhaC9zSKNfaB9viHKjwuI4YUu+mEXQ3NGqYmnII6ndzT/n1HIQbwXK12QHMa8EBSENsECJCFxQSJsym+aSwVfc33dE6MA4Gbw1jupmJwLGJBFIQymnAHPRRsUmTPQ8NXrOeiMNONMtLEnliLakvJtYgC9JguKwuBpW5t1AbbJkYDG9ujM1qe9rCLMa6WV5jAIMcgptoJNlslFpnBO+afelBOAhTiX+RAzOlXx7pAzs8mDKj3hZc5bqxOTCRZIMFCzRgA4FMrrW51LY2pukIjLq1vQouynwGmNGF6U1XcNVbi9vNN+xVc2F38Q1UuiYczRAQxtq06xCIW54NkbiMsybfqnEDslnlbn4xQJJXBwDxMIuUYpbFLZhvcnfPoP4Rc/+LY0y+zPL83ieNiEGS7xYFDgMHRBxD+DgwxlhYZ1MaFIIp0Flvj+sPCZbLclHJ9MJdlux+kE9T8reIroXZ3TosRdMUNO+DZvGumuhkgGk2Te7OLDHDjZDFERhbTRWkimvECgou2DCwXG+vDon75gxJPIO5Nfjs8T4PXnYxihqr5vCB0YIaGC0u6M6g7lunea5JXzfHgJ0m/m5KvkVtrfgDezSruSqCQtOMR7rjlsuyhxySEgts1uBjlgxD00WeN142s7DMBoLtRzs0TrJ4XzhrcpFcnkFzR11jZrw+3V+imoXDQFMv7JEmpTmII30D+rotzmQRgoOC8fpz38pkg1YwrbiccEqXSBRiAGLztprbErfc3Fd37xLmx9VtVXpL5tkUaljYQFzvcwJMBky1jqlV46RLBNv7nAmS1WVe6w2k9RpsEXqrSVzTTILTxKfr7ksXRF5XHv53/0htDMHt+Jp+oRWE03weV7Cb4HG6tawMnqALtDBQPDCTk7kl6d0W5n63vWEotW+QRcW1j/gtausWAVpE8o1FVhhxwRj7wJWtQ9CCCaEBQaEZCE94CY7xllmYTfNprjk/MMBPN7keL+EZnPZ8vY2uF1B1frl0g8HCUZJOeuXG2AzMNh6TI5niGt/1hAawgNh1SNi5HidCkxhrmo6ZTR8pCmFjuoUDzJaeBM7iHmGgDD2Y5pmc9AgDDzPhvCCp5ZGNUBHTMybbOIIUe5/kyTXRErkxbjHYoLXuk+K1z8Ew3q7MwfxKvggfVPAm2Qwpf/QgbAJhsNgtG/U+tc/uQJ7CbB0Ocdyj5jyH7kxqhNz0CeZ1TflugkeoDtb7mEcyWmvbCBZzJd5uRWKJjbjG10362mNjeG8kleYSBswjYObvHZLflVOeJ9dWDNfdyTXwhWlBtLosXBQE3vWGBl1303xdyRJn111f6bKq/lriz/3VP2LRHDasmksYGoc0iOOKIwZNNj7ERNyPPsGg8WJuYZHw9niQno1yXXduf5d1CbAIHkMeyUBMQVu3KPD9GWQThrk+bA4bgBnsAAw3QIPtPnH99awU9y3bwmU2olX4tK7LwrSFZnczTjesEiaBZKtZLG4ZS2GwDg5hsl8G87VHuDgA92yUJwLnVzOqjWBdswEkietXA93JwlAYbLLVjGoeewODCQrN3f/6J+nGX4ejFZHtH2HlnmpwMRdU393GdyWQzdk9MOp+95M0V9bErfGagyz0a/UHA8cmgBE2oDudpDNqkGGswSAQZotau4ZOjUv85n5E+KS+ETSG8q66Zw9eF8MJBMku7NBc9KBJ4qB70pyxNmNAONCTTbrrMYLipqu4yY/kkR5+djEdjDUOEbuwMTdxKNZAbAM0GSmYbmkQpNFSwkHzmoWl+vonMF35NF6TLbO6MoqZ1azmwrpT7DpAd08hm0XTCRN06ZmM4rI6KE9EqoCAFFBjg+tOolaXwM9G3FXLprQFaSSrtbmY0XJRmOy7HrGEWGAzFZjG39wYyf209AdBaUZT8D3MDCzfUh/CBykwhzC3MNvcaL44ybLzowmFBREofJe7QmiaQyvqysFsxGqtsI7dL/FoXktxWtrTg284BBjT00tpTq9htPmxYd6t5sJ1cVLTLc2t0XyudHdKWXZmL+/6Um0wO20J4hUmbuGzBm3eYQAZSNLTIKdV7aDuluq0lvUWHjddQxuai2KQGUwwc70VsEcyK1zdg8j7ucu0ssBWDmlh95m3YMH7rWtrxqM7yXijnKjuD3mNsLtTCcE17n4jbH5594lr3OBMvusffd5kqHY3WNKEaq7+EZQ3VwNcV/2eRtrdtj0k2YdmtrC6BQm1kd1WR6AIdzXddXeqtQKz2/YeT4QmiLZb7tkKwR7uhbgmd7c+2+rb6pW61jQNzIjYtV/viWZwO+8Bks0YgJ5ukWgQ2LioVfmy2MaMmOzMLayud8nV37sIXGZ1JRS9u8wsZf80qDNqKl3R47BhuMlQ41u31aCPR9IDJsEGA9r1DwZw/YM8QV/3HN6KxNpAGA3m3KfZ3qe1IupbNEjYSP4tTOct2XLRZe+u2bPJpc89oomwPUVq19UVyjPIdXW7WMXgkawmyu5mn7veAlpICmliEDFPUEpYMLe5oB4cU01qnZb+wHJzZxhP2ApTnreg1Q2tTXxqnxmogQfDTrCg9ffslrfOYTjikHyDN/GzIbPeCrtwS2HACu3j7eivktujWu+GT9pWTSIcpHCTJck3EUiaW3jd9Y2uPGq/O8HYnU+Dwgob5vRkvGpiS38oQ2sSngt+dNMPPZWnfrUOmktqxP1rKhrXrj7EOTDefd5QgsRWEIIK7fPOYD5JLDEtdvUMR3VRpP8e1tadVy1Y6IbUrrk33WM8n55ojX7NBTbIbK7uwTkGh9G7W3/ZDMTCWZJXYnQPn+tKIozu8eWI3+O39Sdo9TzXVvqmW7fLHILDoWhujmtMQLpYJkuMFl35NAawZHx733haXgo5Gpd16zUkEFq8W6DQNWAvM5DqoMAMj6nllDC7fj/i+oAZksUgqrSnSc2qklwww94gTg0yB8N97dN+ubQ6CD13uEsEUvZNt9TmgeUb5DYrfI8nr7cGOdD/wTQY2aylRJv0dV1N0kPSGVWasc/VBHELgy3og8GtYyLdLcKrwebKtijNEgFi3nOGC5v6w2zj5ar2PshjM5pCJ8zsVjcb1XsC0xwoAnnr3B63qxHy3Qnlu27AhPEk6x4m1pW+Fmo3aLqb5huRk1zP6/8egmzi/HiEaVxh8l2j7+YegW9rd0k22jS9Q9NcNxfG2SjMyefdnVhNP9HkVwNoraBxB+YI0ngLxXSN66gri7SNTTKhlpNajGoKXwq77XXy3XnURKMxdvGHQe7ZKl3M4opqu7mtlst2jySbYcyta7u1wdIrPWNSXMWOScc8ko1LDIzBsiEtGJCy5u4Wg3sWSr0lf6vG6GB4c3c9wWR6SpD2SRZNaTVKJb1xTKtRelKc92muDIM2e3AOhwaju6+fQLeCsshBwHiXpQdaPrCE8zCxmtOVudYtsTG8K5LdZVMGsUGYABQssklNTGKw6pO7X4P0yZpicDG9wkB6G6Tq39xvVrY2szagRXhdcqjDcbcc3F9JuL/kI7B+iAMTdQZT4WcXW0h7U+pNIZMkrrIoGKx1Ml3wv6U+InD9mayUSSVXSrzM7b74XtN8uacuC9+DYzCnhwjQTsSlLX5SA5o0iOx6SpcICLIg8plgMVvn1QTXF1N7xJEAU5CImC3MbmE3retk9Ye4vsOspqx5Y3JJGIH4DVrB1E3/YI4sLAbTfFBz98HTLFADhu6yMHqCcTRhJuTCxDVPxHgr7rhqEnsgA0zczTCkuMTyPoPasz660ib9AGZ6PhUDqK3mhtgpsEdY2LwWEFyHw1juidWCQpJM0jGLK05w2IRmwZt4JUy3lpcg8ebEYI9k98BKAaCgiE2owSaJ9ql3XzctwGzeC8lo+gFMGGDXD1rxZ3xNf0jsefbCrPUXmM5BaCH3PbwN7NKOOgRdRmaz7tZtkn5/XwWDtM9pIiyQ4FFbBkmAR1JIrZepHczWMGbV1QQTTgWqa8x7E+dgXiNuxGMQuaqMOuK73ziEa445bCR7YPxgVNzE2CM2e1IHxhgxwxzRh50tTGFWbWJ/YoMNff2VAQ8XBprSJgX9ga273vEx2PxmFYxsECXd0GXiRtgkm7B0ZbInStNisEKTaeL6BRNNcRsfe9cscw/2Z4PKfNBFWLr7tyn/HlrgGm0gERRpuujhtMGwIVxJnL/7unUuqGE/rFE3AgVDJLea1ROxuzmHMWXDXMNczxaTG/HbknYTm54HW3JvHJLuY6/wQIV6T7emgA1q7W7pe4+AQtMWVDzE6TJp0wm8r7v4Y4BNLJJMUtg6rRZM3BMf2CTpD4TiiiJ+dyKZ7N3KDRYR946XJnZrdR0CQaUxg5nWGpPsC7NsKC2tzSszoYD2W4r1WqR2NzQaDAJQU9KNeF32bN3VXfkT0Xqnv0Jw97XXhlgDaSEz5sHswixNwIwWVGib5t31FjbT8+Yq6Oz+kQuDZXaL9MC2OKS5Mszmar8eCEmNW8V9E3H3bPge2wc/G/FjUFPg7nu3rihcb6E3TWyQ6rCySl4Ti91NS3MwovvufQiHNu9ZK1LmrVPjLTUdJOssrtFGj+u4W78btz2c7JFJ97dxXYMRuSt+dIO6bnO7hcV89e5J5ArenVM18OqkWkpTTeb3i114Q9VEwmD8mIsYrW2+WxoYXLBZWKQ5IIqB5pnJ1Ym7ukTQCkm0frwHat/NOkp1mpUlud3cg5gwnXG1GERyGhfs7/rtNxfVIrPrvWBWF5dAa+OAZhQwi3AQLjDS3yu5uSiwrv27r373Kmy1CYSNJhAW7j9mY+jTuMHWZsBIDGlBA8m/KW3MQry93867RYGBxyyYDXZExBgoom7dVI8774ZRsKV9DgFIgunm03QRqKH5hBWSiD1aNFdhaSJWtgBz0Iqw3d3IT+DTI4XYDB21CA0DwQjOkuxWHHaB//5WbGtzi6F33zmcJaltj5pj5j26lfFHvFZkCgoJQJnT4zzEXYjfrdNoxUZy7bm295eK0IYwgtnuc38tYCAdrXWtWiKIoKoHrxSDdx/EwFTPIgaI8z5XsotZGNwIHbO93xOiOShgoBWEN71D2BDDWAub/S3d1nEhbg/iIQwNEvt7KOjXQ6GNoUH1K2x0p5QXds1zMJgu/tQb6uYVGN8scU9mo6oktyuJpBgMMoY9sLM/O4SR9XYQq5pa71D7JJumd82+cUI3jNZBoJkYeoXxBpE1C43rCMOTkk7W9UpO0w/F9JZ7NqUsykUsBLy/dFPJ7fWnBReIQcpE1CCqi1mteITZUvqFXdvW3KdZMF5Q3MUl93iTGFdvEQO6fwRzeKetGK3NeybcLQc9e0OEK0VMGq0/3MQihoIlnG/QdAcDtrqBszABFnrMX20GG3JzWeZCE9iAbiPjwbVQukVt7AAYYqRpHqiWrukWiBZ4mJ+l4cZFtamvMEASRdjiih700gj5HlYGxgye9DboFJRdg3+PLwchZS5VB3OtggdhYPYe/dogrpouCDRXmtI1/XpzXF/9S5xeGPM+bxU9wFRXFptVflxTA5auyHEYn1b4wfwSu/s7aI78fyVR22yO9hsh3xMbGnfQtLrGlUSubc+ex6DCTE85Aq0MtO96Utx1QAirtrmyHCL0xGiu9q2A7FGyr64eDOw2NZ0hbg+ml7Wkisozcb9+OxvSCkiST/qbAr9FcohF8mhGmd/0BubfoFNbKhAbNLbuirfIvljJpGUtXbpbCmgPhwlNPN/c3N2i8YqZBlM1Bl0i2C478hwQv3VbYAXzmogrTBrgPaWHWl/m9WwVhCWp3u1iFE3QnjmwIdXEu48es8EMSW/BgjGiD2E23sKesRivtnoK0TN4jSWi7K+jVTOupHbl7dMscXcSVRO02bqrpsBdg4nuzAKrLT2iafa3YABNaYEGzdU+YbiHCvDWyizrPwjMBkAKmgCKMNP4CrM0kSCJQ4qhNeBc37qyOr7bynpSHIOO8/x+6ZSmWxCr3klzUaS6Kf6WizYCFvfoo9UgiGGsJdY9ye7TQwC63sODwxzvNJclyO7vu0tMskuuLXM/Up991rdC0ODAFO67pnokt5LJ2NM0xq9qvw+YoxnVLNBXWJAYrJ/PG2TUGWyYT7jMUZAqTupOK+mPCzvszadLEK3Q7DY8Y6xNbujQmoXXknkTASuNG7iipPEayBYy//r/NodatkqdpDP4N9fUQutWHLIZ9abqkIhzJB+lPxCfN4NBqj1ue42jCFYX71zb3Wv+mIPAhKEFG61WIfzoo2LzNR+PuwbXiB3x+OmkXkSKmDC+3tT1+29hNxuC+dYX9NGKQ5O5JyK0ap032DVrUmg9pZje96/rz2a4RmxtVZjYNJrRZW6Mo1log37o/85JbAygzlqwYDBg6S5DMujNAt89hPWGmtKn+o0zSKpnP13JFFfInIKNVrETLJpTV5uDQrJF9Leqv8vY99BoEAW21Zjd9Z06NA2iS8/nZuuYekqPzuqK8rM13nJLKm+wIIHkSTczyIy75z2rP4xpbS7hEfFjNuIIMmkGg8wb7PoFe8FmVVPFVaCW696dXIT51lm1yNA14qMZYakwPo13ZxDvBPGrZmVG44Z7cH5/io9mCBhbRQ/mwBTJqw3pYWmVvLv1mtZgpmcb1N7cl4i8NlAQx4BbD3EtbqN5qmnMjTdJq9Cvy76twm+Q+X9NymhOJCTfOgAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7EAAAOxAGVKw4bAABlT0lEQVR4Xu2dBYAcRdbH3856lCgkSAgSCBaCuwQ9nMPd3Q8PHvSQAz7gcHeOYIccBAtO8BA8QhQS4slmfeer/+uq2ZrZ0d3ZbLL9/yW1XV1dXd3T0/Ne1auqVwVRgxBCCAkdEbslhBASMqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQkrGYaA//zpOxo6dpPHVVltJ1hywqsYJIYQsWeQqr9MqgF9+HS/jJkyS8vIy3a+srJJV+68kawxYRfd9fp84WYqKiuweIYSQ1qCurk5W7rei3WskF3ntSKsA/vv6u9KpUwe7F7Bw4SLZc7chdo8QQsiSQHPkNfsACCEkpKRVAANWW1mbEQ7EkUYIIWTJojnymp3AhBDSTshrJzAhhJD2C/sACCEkpFABEEJISKECIISQkEIFQAghISWjAsAMX0IIIUsX2cjujAqA7h0IIWTpIxvZTRMQIYSEFCoAQggJKVQAhBASUqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVACCEhhQqAEEJCChUAIYSEFCoAQggJKVQAhBASUqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVA2jVjxoyRnj17ynXXXWdTMvPUU0/JMsssI//9739tCiHtk4KowcaTMmXqH7LC8n3sHiFLFzvvvLOMGDFC4xle9RgFBQW6XW655eSPP/7QOCFLG9nIbrYAyFLFvffeK3vssYcsXLjQpqTnsssu0+2ZZ56p22y44447dHvTTTfpNhv+/ve/y+WXX273CFk6YAuALFW42vlee+0lL7/8ssbbGigXpzSmT58uvXv31jghbUk2spsKgCxVOAUAsjXptDbdu3eXOXPmaLy2tlaKioo0TkhbQhMQaXdsvvnmNiYyb948G8vM3LlzbSwzNTU1NpYdTvgXFxfnLPyXFCVGwgkVAGlzvvnmGxvLzA477GBjIj/88IONpQethm7duskTTzxhU1KDUUOlpaV6TjbC+Y033rAxkZNOOsnGMvPrr79KfX19XIuGkMUNFQBpUyAAN9hgAxk2bJhNSc/VV18tgwYNkq222kq22GILm5od33//vY2l5tFHH7UxyaqP4ZlnnrExke23397G0vPiiy/KGmusQVMRaXPYB0DalMVh0//ss8/kgw8+kAsuuMCmpObEE0+U+++/X+MTJkyQlVdeWeOp6NChg1RWVmo82/svLy+XqqoqjcM01bVrV40Tkk/YB0CWeCBwHUOHDrWx3EgneHFss802y0r4g59//tnGRJZffnkbS40T/iuuuKJuMwGTkRP+uC8Kf9KWUAGQNgXj+h2PPPKIjWWmoqIidm46O3quNva//vrLxoJO3Ux8+umncsABB8hXX31lU5LjlNTJJ5+sW3DbbbfZGCFtAxUAaXNg1weXXHKJbrOhU6dOKkw32WQTm5Kea6+9Nqs+gHHjxtlYdqAW/9xzz0mvXr1sSnKgiNDxO2nSJN1H62LTTTfVOCFtBfsAyFJJLn0Hp5xyitxzzz0az5TXlQsFs2DBAo3nC3Rcf/zxxxp/6aWXZO+999Z4tuDec23RkPDCPgDSJmy33XYqqFAzbi0OPfRQGxMZOXKkjSXHjdMHY8eOtbHkOFv+EUccodt0nH322Tk5mRs1apSNSdbC//PPP9dnCed0FP4k31ABkLzhatdOID/00EO6zYULL7xQvXFmAq4gHK+99pqNJadPn8ZaEFw1pAMmGjiA+/e//21TkoP+h9tvv13NVt9++61NTQ/mO0BxTZ482aZkBiYmkMukN0KyhQqA5A1XQ4UAhxfOhx9+WPez5ZZbbpEbb7xRDjvsMLWXp+Oggw6yMZG77rrLxpKz+uqr21h2cwHgBTQTvqtouJvOhrXXXluefPJJWWGFFaShocGmpma99dazseBcQvIN+wDIEgMmSMGrJthwww3lyy+/1HgqIEinTp2q8erqaikpKdF4MpxyytQHkC2+OSZfZfpAURx++OF2r3WuQdo37AMgSwT+bNl07LvvvlJWVqZxDKv85ZdfNJ4K306fyc0DBGgmIYrjmF18wgkn2JTMoGM3E1AWCLNmzbIp6YEy84U/F6YhrQUVAGlVMNTxkEMOkX79+tmU9Phmo08++cTGkrPnnnvaWLxPnuZyxRVX6Lj+Bx54QH7//XebmpwDDzxQXTncd999NiU5/tDWxx9/3MbS41pBYLfddtP1DwhpDagASKvim0qy4eCDD9bRNegsPeaYY2xqcnxfQM8//7yNNR/UvB1uvH4qnn32WXX9PHDgQJuSHH+UED5XNkQijT9L18FNExBpDagASKsCPzwwAU2cONGmZObWW29VG3g6nEDcdtttdZuJc845R5XR8OHDbUpTfvvtNxuLVy7NxR9JhFZQtsDk85///CdO6OeqSAnJBnYCkxaxaNEiFdbOhz5MFv3799f44gAulc844ww59thjZaONNrKpTXECdNVVV9W5AHjtE4Uq7O5O8WT4WWQF+iVcPwWeE5zA5Yp/n5jPgJaHG0EEU1E2I5ZIOMlGdlMBkJxwAglr8g4ePDjpxCqMxvnoo49k44031n1fiLUV/vVTvfJ//vmnClV0Rp9//vk2tWV8+OGHOgy1OYLaPTfcF0ZFTZs2zR5pBM7kMFpqtdVWsymEBFABkFYBppIBAwbYvQD4wpk5c2accL377rvjnJ+1Jcsuu6zMmDFD4xleecUJ37YGHeFbbrml3QvAvAM8ax/0gey33352j5DsZDf7AEhOoObvC3+4N4CwhHCFaQIzbd3MW/jgWVKGMGIBllxIJfzhwTMbL57ZTPRyfPHFFzYWz5QpU2LCH55JsQIanjU8lmKL9Qo6d+6sx/fff3/5+uuvNU5I1pgXKS2Tp0yzMUKi0dVWWw3VZw3p6NevX1b5FhcHHnhg7H7Gjx9vU3Pjueeei5UxcuRIm9qUXXbZRfMce+yxNiU1u+22W6zMRLp27arpZWVlNiU53bp1S1kGCS/ZyG62AEjWYPETZ/P3HZslwx9Hn27kzeLCX3hl/vz5NpYd5neiW4zMcfhDNX1gmnnzzTc1jn6QdMAj6Ouvv2734sFzdv5/Uk2Ic/flTFvAeRslJBuoAEjW+EMzXQcvgJMzrNObOHTTmS+cQGwJWNELjuKaC0b/ODJ5BE2FrwBSzQD27fCZVjhDZ7PDLxu49Yhh4llppZU0Dt5//3191jCtOTMVJqQ5ExdnDZNcoAIgWeMmSiUufnL00UfL6NGj49wXALekols2sbm89dZbctNNN6mjOH/R9lzwl2wcP368jWUHBK3vwTPVcFPU/rH2sOOoo46ysUZc34DvQA6O82DD93HLRiYuNYl8eNa+N1TgZlq78wjJBioAEoczK6TDXzYRuPV2TzvtNN06nKkl09KKxx9/fMwFRLLrr7/++jYWKJvmgMXbHbmagIDfukkU1g64h3AktoYcMB3BPYTvFyhZC6mwsFC3WDTe58orr4zbOtyaB6lMUyCb75aEDPNSpIWdwMSBzlO8MgjTp0/XtPr6et0mw+W95557bEpTzj777Fi+dGy99daxfP/73/9savZMmDAhdv5xxx1nU7Nnq622ip3/22+/2dRGJk2aFDuOAFI9Gz8fzkvGhx9+GFdWJlze559/3qaQsJON7KYCIDG23XZbFSJPP/20TWlKSUmJ5unTp49NSc4BBxwQE0rp+OCDD7LKN3r06Fi+Xr162dTsgTB25w8ZMsSmZo87FyEZd911V+z4448/blOTs+aaa2q+2267zaYkx5U3cOBAm5KcbbbZJpY3FcOGDdPjGDFEwgEVAMkJJ0R23nlnm9KUL774IpYPQz2Tsf/++8fyXHHFFTa15ay00kqxcr///nub2pTPPvvMxuJx566zzjo2JTu+/PLL2Ln4bKmAYtlvv/3sXst58cUXY9ddf/31bWo8O+64YyzP/fffb1Pj6d69eywPAgkHVAAkJ5599lkdwz5tWvrv/O67744TKFtuuaXW+Hfddde49H333deekR/ee++9WNlorSTDjYnfa6+9bEoj7tzy8nKbkh1nnXVW7NyHH37YpjbS0NBgY/kHCtRdGwGfG8/aF/wIJ554oj2jkQceeCAuD8JFF11kj5L2DhUAaTVeeeWVJsLFD82t+UM4p5v45ExQBx10kE2Jx7+HRDp37pzy2BtvvKHKL9kksVVWWSV2Xk1NjU1tSmspgkceeSR2/WQhmSlp0KBBTfL98ssv9igJA1QAJGcyCbHE4+h0PP7446OHH3549JhjjtHWQXN56aWXYsIK8VSkMvEAmK9cGd9++61NDUg3i9mlb7jhhjalEXcMyicRtJpwDH0Arc2TTz6ps4uPOOIIfdbJWiMjRoyI3a8LmG1MwgcVAFnq2GOPPaK777673csdvzMWHZ8+hx56aOxYdXW1TQ1w6Yn9A75SOu2002xqI+5YJBKxKfHMmTNHzTMTJ060Ka0H+h/c/bjw1ltv2aMkbGQjuzkPgOQMJmRhoZdcwUQyTI7C4u+pwEzWV1991e7lzpFHHmljIk899ZSNBXTq1MnGRB2pOdzkLLD22mvbWADcNTi23357GwswCsbG4q/r061bN102cs0117QpycHzxES6P/74w6ZkD2Y2Y7Ka73IDs4XN71t22mknm0JIEgI9kBq2AIjP+eefH6td5ooRks0+NxfcNRKv49/7O++8Y1Oj0c8//zyWnljLR83eHUvEpSc7Bvy+g+22286mJsfl23zzzW1Kdpx66qmxc1148MEH7VESZtgCIHkHNcvmss8+++h2mWWW0W1rccABB9hYPP5KZW4FM4BVxRyJNXXXOkj0yV9RUWFjgSuHRLCwvO9y4r333rOx5AwZMkS3vn+gTGDhHX/ZSbiXwDrFWB2NkKywiiAlbAGQRObNm2djjXz66ac21vbMmDEjeuWVV0aNMLQpjdx5553Rt99+2+41gg5WBIfr7P7hhx+iN9xwg8YTwYih6667zu7Fc+2118Zq5H/++adNzY5MHfEAz9uVjzB06FB7hJCAbGQ3VwQjLQaeKH/99VeNT5o0qYkDs7ACf0CbbbZZnCfSfIJWA3wAwZdQ7969bSohAVwRjCQFHYYIWGs2H8yePdvGRF0XX3TRRXYv3Bx22GF5E/5YGvLss8+Oc2T37rvvqituCP8M9biUXHbZZbH3Idmaw6R9wxZAyIDA2GCDDTQOD5zN9a7pA7szloH0PVx26dJFPVlCsGQDRsrg3jJ5Dl2awU+trq5ODj74YNl2221tanKQ1z075H/22Wc1vs0228jIkSM13lzgnvu4446Tp59+2qYE3HnnnU08upKll6xkNxRAOtgH0P7A+Hi4N/C59957dcIQvFA2F9ih8Ur5IZV/Gh9cO/G89h6ymRfge1914cILL7RHmwdGIyWWiXDyySfbHKS9kI3spgIgii8MevToEf3vf/9rj+TG1KlT48pCyOTNEsIH+QoLC3MOGKaZLvh5Es9F8O/T1LgXS8C1brzxRvvpk4PhqP69Idx+++32aPO46qqrmpRJ30Dtl2xkN/sAiOLbqmHK2XPPPdUEcffdd9vU7Ojbt6+aL/zVwX766SctK5XpAsMZcwHlu4By0wXkMcI/Fk8MwCiClMddyDelpaU21pSLL75Y7rrrLrsXrGeMSXRnnnlm3KS1XPEnq91zzz36ua6//nqbQsIIFQBRQYDZpJiN6q8/C0499VQVjtdee61NyY7HH39cPvzwQ7sXsN122zW7zwH3COGHLQS6HyDAU4XEvAhOOSCO9XRRrkt3DB48WJdZRDpoDSWQCv9al156qfalOCXp7qc5rLzyylo2wkknnWRTSZihAiAxwbfpppvKxIkT5ffff5cttthC0xwQRMjn1gXOBiycDmGz4YYb2hTJeU1fnO8ENDqIIbARd8EX2slwAtMJfASnHFwaynXKZfPNN5fPP/9c7xNKDC2gXXbZRcvA8dYG17jhhhvkf//7n042u/rqq+0RQvIPFQBpAmq+H3/8sSxcuLDJ+rduRmsuwvDLL7+Mrfmb6GsnFa58CHwIaCfIk4G8uQSnCJwygSJAOtbqxaLuMIdhbsPWW28tJ554orzxxhtyzTXXxK7VmjiFBqXjr2OcjpdfflnPS1wnmJBMUAGQlHTs2FH+85//qNA7/fTT5cILL5Rdd91Vj0Hg3HLLLbLXXnvFuVVIBs6H6QfbMWPG2NTMZCv0nUDHPfnmn1TBgVo/zkGrBu4jIOQXLFigTuNgckHZAHmgHL766isZOHBg7LpLChjLD6666irdEpItVAAkK+644w41Tficd9556r3zggsusCnJgQDNBQhX1M6TnQehDZzQd4IfAfFkOIGdLED4YyIVWijo/EbnLFocOJZ4fcyf+PHHH7VlAJBncQNl+8orr9i9AIzf7969e1zHMSHZQAVAmg2EDkh0heyEdHNIJniBE9i+2caFRFxeF/y8LqAcgHt96623VBF07txZzS6ufOA7inOfC2ailjjFaw7Tp0+XAw88UBXU3nvvLX/729/skWByGJQXOuwJyQUqANJsIHQgYN3MYgBvmjCzQDnkOmMVZblavY8T4qlq+A7kA64MFxJNQAjIi9o0Wi/rrruu3i+GRh566KHqwgHCFj52kBc4c5G7xuIStjCZ7bDDDrLccsupOc7hFBQhLYEKoJ1z7733qrAYMGCATWldfvnlF93CSRmGfaYb754MCGxfuPlKIZnQw3EEJ6AhsF1+F5IBlww9evTQRV1g9//Xv/6lrYL7779fnxX6OtAngDLRIe7KcfeAhV6AUwj55u2331b31VBO8Pnj889//lNef/11u5d/oATxOWHiI+0bKoB2Dmz04LffftOt4/nnn9fVueAXJp/AB76vbFDLxrDKbEgU8E64JqY7cBzHIPRht3e1dacUUgXgav84B87r/vGPf2itHoL+iiuuUJ/6mMeA5wOlAIHr34czfwFXZj6AN1UoTazkheG4PvCXhGu5PpeWXhctimOOOUZuv/12mxLg/A7hHSHtHPMSpYWuIJZu5s6dGz3ooIOarA2Lrx7hkEMOsSktx9TCbSwaHT16dHTbbbfVa/s8/fTTUSPA4vKeeeaZei9YdN0FI9B1a4RhtKysrEnAsfLy8mjHjh3jQocOHWLxTp06RTt37twk4BiuN2HChOh3332n94D7McI+unDhQl3HF2se1NfX6zGAhejHjBlj96LRn376OXbPRmlo3CiIrALypnLr4C9qj2BaGlHTArBH88Maa6wRdw0Ef80CfM79999ffRGRpRe6giDqRuCZZ55psjasEYS69cf5P/LII1rLRYBPf4yB990PZwLnOWC6eP/99/XaDiNUxSgcXVPYH7Nu3kMbi8fdi4/L6zqDfXAM+ZGOkHgugOkHE6zQ+kEejABCB6trCcGUBFALT/w8uP+qqirdHzCgn7YCcB9ofSBvqs+RC2eccYZu11lnHfn+++/V1XbiWsQtxZnpfJZddlkbC+ZqoHXgr6BG2idUACEFgh0C6+9//7tNkTjXDVOmTFHTRz4Xd4Eycpx//vk2lppkAhwg3T+GzwHB7QR/IjiOgBE9GOUzatQoHdKKzwgl9dprrwl87cN8BUUAoY78/jVw3lprraUjgEAkUiabbLKJmpJwzcT8zWWPPfbQsiD8oQRyYcaMGbpEJJbePPfcc21qU2BCgquLyy+/XL744gu9HgknVAAkxoMPPqiC0K8NrrLKKjbWOBIGwQmNbIWHnx8Bk61Sges4e76PK8MX8kjDPoS2q737uHt2ncMrrLCCfPfdd7qGAc4tKSnR2j5aBPCVg3KQH/53kAe46/7www/aWTx1ylTdh099tCj8oaKLE3dfAJ8P3xv8+WNmMO4TM7CTgU7kr7/+WieObbTRRjaVhBEqABLHrbfeqiuFQbhgmUcs0uJATdnh4hCW6LhEBypMSKlAvmzAdSGEIXx9gY50CHBfMbg0V7Z/zJ2LspCOPAgYugrhjhr98ssvr7Vs1ORdS6djx456DoQpavcQ8DgP18LC8DBhdezUUfPCfAYzEPItLl544QU55ZRTdFay+9z4TMmUH4U7yQQVAEnJ6quvbmMBcBGNUSMIMFU4MOoHTtOQDqEEYfrXX3/Zo80Dgh3Bxwlxn8R9AGHoRgW5405ZwOwDh3foA0ErpLy8XOMTJkzQcyDMcQ7yQ0k4peLKwepc48aN0zjAaKHFAUw2uIf99ttP5yv4wh3DWWHOwXeC2j0+I+6fkExQAZCceOihhzT4oGbsAwEE30E+ELqjR4+2e5lJV9MHiQIO+wgQ/qjB+7jzUSaEPjx9wvSDfWzLysq0M9gpDdfRC/xrwtQDc5FvvjrrrLNsLD+gHwL2fx8MS/3222/tXsAyyyxjYwEw5zi3HGjZEJINVACkxbzzzjvagYwRLE4wnXPOOboFsEnDvg73CRComNkKs0Uu+AIfcZQDoe4EP+JOyLs8CFAIvvKAh1OYqjASCJO5YOqBCQuuIP744w89B0rBVwLAN7HAhASQhj6FHXfcUfebC+Zo7LvvvnqP8ES63nrrxbmBhskH4L6OP/549U6KiXaEtBQqAJIX4Pv///7v/1QwQYhuttlm9ohon4IPZramclwGIQi7eyK+YHfCHiDd7TtBjy3SEVynLoZTImBYKoTtzJkz1ZyCe4bLh/XXX18XtkdejASCsMUW13O4a0IBoDWAvAAzZ4GfNxcwJPall16yewEYmuqAGwiUDSWFkVnOIyshLYUKoB3SXEGUD5JdG6tPwdsmav6OoUOH2lhTnGBNhX8NJ/BdGoS+Ox9b1Pgh+GGqgUDfeeedVSH17NlTl63EwiuYCYzO4Mcee0zt/mgZuPJczd8pF+xjsZxFixbFroM5Folmp1zAvAjHxhtvLDfddJN6+HS0xffZFtckix8qgHYIBBPsyBB2bty6D9boTSRfP3gnFBPBegDwb4PrIGQrMJHX1f4dya4RMWlaQ7cfAzV0mJkwiQpbrF2ALUw7OB+1aXSawsUD1uDFM4GSwDHsoz8AyiDZEE+MFPLvCWagRJt8LsBm754L5igk+uBJ9UxbE1wT/RFYmKY1/Q6RtoUKoJ0yZMgQGTFihGy77bY2JQA/bExowhahV69eOuTSFzKvvvpqnM27rfHvDUD01jfUy8Iakbk19TK3skbmVNfI7OpaqaqvldlzZktFxXz1pIkaPoQ5ZvFixA9MO9hHQLlY4QyfH8tWouMawh01cBz76KOPNL+PawlAOfjApLQ08Nxzz6nJys1xAJgUiM+E4PctYEIZXGXvvvvuNoW0N6gA2imY0AWcawHgOi99ILhgV3ZgWCOGeybWuuEsDQICgrNv376axxciiwuognk1dVJXUCTHDl5O7h+8mry38yAZucm6cuVGA2X1lXrIgeecZu6tQV0aQJFBqENgYwQPBDpG/aAFAmGOEUwQiqjFo7MaLQaM7Udet/BLojLEc2gL0Fn86aefyvDhw3WRfpiuTjjhBB0S6loNaEUAzLTGfbr+CcdBBx0kTz/9tE58c6DV4fAnj7nOZ7jGJu2TAvPCpG37T5n6h6ywfB+7R5ZG8BU7ofXUU0+pAJk6dar+2DHiBLNCHVAAbv1e/9VIJvSgXNCJmghWzYLvHAhOrC+M9XVhIsGs4i5duui4e3+Y6JlnnqkrjrnaNq7rFBDivrmooqJKDhnUT87s1Uc6zK+WgqJi6dihk5SvsZp0LyuR0m/GiPTqInOPPEY67mYUWQOUVNAvgM5l3BOCawHgOpg1CwUHVwoYDgrzEBSAe27Ir+alNODzoZWR7DklgnLhgROf23HbbbdpXwX6LKZNm6YmPNTMMaQ2Wz777DNd2B+g4xgdybhv34yFZ49rQOlhGUyH64dwnkbJ0k9Wstu8jGmhN9Dw8corr8R5wgTPP/98tH///tAIsfDNN9/Yo/EcfPDBcfmShTvvvNPmjkaNItE0owA0GOEc5/nTCONoJ3jwLCyOHjl4QHTEOmtH/7PaytGXV+kf/XjNdaJfbzQ4+tveB0XHHHdk9NPBa0V/GbRW9Peu3aMT991Hy6+pq9PPg2CUgAYj1GMeSUeMGKFb4NJy4eefA8+gCEYBZAzI53sDPfXUU2PntyT4wNPpYYcdpl5ZM4HnQdof9AZKmgXMO4k1XgyZRKegeWdiAUMnk3HdddepmSgdWDnMYYSijQWg7ERq62qlZ88u8rfiIpkwe54slBKpKSuSedFqmbtgofwx5iuZ8fZIqa+LyJxqkQk9e8isd76Qqf+6QQpMLR/XwGdCjR8B++66qPk7Eu8lG2A6agmJM659YL6CeQojj9A6Q6sLC9WgBo/5AJiV7L4PH8y7eOKJJ7QllolEcx8JDzQBkZzA65KrkIR7BfQXYCYwFjlBx7M/eQqjb2BKggkI5TcVSFGpqmqQU7ZYRdYev0AWNtTJSsv0lq5dCmThnHlSYgR7h6JSKSqMSH1VjVTXR6TWbAuNsiifO192mjdD6uvhYK5pfQcuIOD2uDmfy52DyVtQjtmej/MSTUBPPvmk9j1gCCrMOLneCyGJZCO72QIgOdEcwQTBjprs5ptvrs7UIPwhBFOR9JgR8n0ro/JnfY1UFBXIxLmzZOK0+TJzUYHMrIzI1Lm1MnFWtfxZFZHZ9bUyt0ikqigiCxZWy6TPR5lWQPJXvSU+7/EsMKkNwr+lYB1iLPSOCXQU/mRxQQVA2oRkQs7VqBPH3qs+KDatgDqRhaYmv6AuKovMdpbJN88UM7O6RqZHa2WWeZtnNzTIoroSqYt2kMq6iMzrUCjTfhyd8UXHtTFRDCEXMGQUUGiTpREqALLYwGgaDDn85JNPbEo8TvDDVo+8DgjnwkipVNXUS1VDkdREC6WyqNQogzpZUFMri6RAakyAUqiM1ElltE5qCo0iMC2F+pIOMnlc5ho6rgkvm5grkAtYMD4foCUxduzYxepamhAqAJI3kplu0FGJ2jECbPuwb2PsPYajpsMvS1sFVVUy14j5BUbIoxUwq8YIf/P2LohEZUFBvcwtiJrWQL3MNy2BRUX1sqChRiK1In8unC8rDtnYlpQeV5tP9jmSgUlTCxYssHvN55JLLlE3GegMxvBT97wwX2GDDTbQyXwY74+hqm6ILiH5gAqAxAFXCRhPnsjnn3+uvnPgMdPHCSucg20iyeYJJOILXN/841oBWq55U38z+RYU1Ei1qSWbyr3UoTUQKZaKohKpr62T4gjMRyZe1yDlRjHMKqmQySv1kFU32dRcQ4tKCSZHYaQNSPY5kpFsbd3mkErhYD4CFuSBO48HHnhAF+vBSCC4h3agc32llVbSe8Y8C8wAx8QtTBKDi+j77rtPZ/NiAlmiaY0QKoB2SKJAgVnBmRaSCRtMGIIAQYAJBJ21ib560DmJkSoYDurwXTr76wn7YI1auFmAszUIJixZiElf/gzVVAK3MT0qxab18M3suVJS3kEWFBfIXFPTrzICrabGVPNNa0AKCo3gFylqiAoGN1dHC2TKPHPeeoOkV6e+5rgtKgVYGxgT5LLBPUMoxXyAYbMQ6hDueEYY9pnOFOUv2Ym1GSZPnqxxjGiCawss6I6FYeBlFI744M8Hyg3fqfueE+8dLjMQAD5fKqVE2hnmi04LJ4ItnTzzzDP4BceFG2+80R6N57LLLmuSF8HH1Cw1LbEMoxSiF154od1rHmeeeaaWXVhYqMEIqNiEMEwCcxPCpKgkulG/5aI7d+sR3blL9+jePftG9+/dN3poj17Ro3v1jZ7QZ8XoOX2Wj5630mrRc5frF7109x2ilZXT9RqYBJaOU045Jdq3b1+7lx5X1v777x97VrjnbAPy+xPBsmHcuHHR1157LTpmzBib0sj6668fu49sg1E09uxo9Msvv4yljxo1yqZGoy+//LKmmZaETSFLE9nIbs4DaKc41wQ+mOD1yiuv2L1GYGqBDRrLOMKMAPcN8CUD00Iy8MoYQRbbthQ3D8BNPkOZ6C9A+UiLXcPU6quilbL18itJl7mVUhOtl84NhSIlxabWH5HekVIpaaiXaqmVTY7eT44zteA6KZOISYtEMk92gvM4tFTwPNy9JMN9brRs4EYj12eA8xPnATjy8UwxkgmmI7Ts4OsJw1SxAA7mYCBgWC4c/sFdBECaGw6LjmjMawDwpQS3HgD3RZYuspHdVADtFCzaDjMLZoTC9z1mhMLfC378SxrOF5CPc9YGYezMUQ1RE4+UyKKGKlmxU09ZuWOB9KgvMnqhQTpLsdTMni+VvSJyzNU3ys6HHyQNiyLSobRUCtFh0ArAwRyEbT4UAGz58E/UVrjZ0PCF5IBZDPMTsHYDTHdk6YITwUIMXPiiBfDdd9/pko1wNtaWwh81ZQgRLGAOgelqlj5Id8IUHZauJu46L81RKYhEpWNRqfy1aJ58NH2mvDTvT3mvYpa8U7BI+u29gVz27HOyya47Sd38RRIxLQQxyqE1wKzmXOcMpAI2e3w3aPVg3QS48QauE3xxAMHvC3+w3XbbqdNACv/2CxUAaXVefPFFNZegQxgeLwEWME8FlABqyS6AxIYqFoDpVFwmnaRMonUlMntOpcyeVCH91l5DpBIrhJmWgZq1W4fE0VAtwS24AoGPBeuxkM+wYcPSmqEIyQd8w0hewJBF2PHhQx/j2X33CL6zNYD1gy+88EK7lxoIRATXKsC2zlsvGAJe+1TN4SKjIJ74ZpQ8NfRG6bJSd6nF6KBWBC6V8wWGeA4cONDuBfjPDMtPYkF9t1g8HMARkg+oAEiLOeecc3TSEjpzsYoWOhIxDt2BoYjPPvusCjrU5FMNGU3ENwf5rQFnGglaCmZr/tQWFMlO6w2UVx98UEY8+LAs06uXHfkZ/M0X7h7QAnD3l9g6yRWYfmASQzmYIIcFerAmsCv3+uuvV5MT1gi4/PLLZbXVVtNrH3zwwfL4449rHkKaAxUAaTHoX0gELot9ML79uOOOs3vZ4QQgtgiuNYA4tmgNYLuopk62XWtZ2akyIht37STv3nCdPP/UvdKhUyf1AFofrUZzIYYrtzk4oY9RNi7utvkAzvKOP/54jbtyUy3SAqV65JFHar5O5rNm06oixIcKgLSYkSNHyq677qqCCssWQsAOGDDAHm0eEGpO8CPuav0uDQE2co2bf10aSqRi+l8iPTrL+a++KlvtvJc8++Bt8sUrL0hhQalpIQQKxIWWgpm1+SgnG7CKFz4nhunCXYXvStuBYZ4Y5eXcWRCSDVQAJAYEzF133ZVzB+c222yjPn8w+xTmiXzhBL8TtNhCEAK3RVqxqeV/PXGWFPTtJse98IzUFC8jkdoG+ftxZ0mXfl3k1StOl7oZk8zbHiiMloKObMy6zSfZLP2I4bxY+xejhPA5YG4799xz4xbfcesYJ4J+BHy3+XJfQdoHVABEbfQQthgGiLV6M63mtThxLYFE4R8bGmqOFxnBPmnuX3LH3AqZOn2R1FZWSH1dvcyfNUdWG7Sj7HHVnVKxYL7UVS1Ue3tLR9eg9g+fSQDXbylvvvmmrLjiiloWHL5lC5zq3XzzzTpUE88EAS47koH1GPDdYiU2XGffffe1R0iYoQIIGTAV+DzyyCPqMCyfOEHtgODBhLR0Qz/T4ZQAAuz+Lo7JU9jieIeyMpk2fqLc9++7pFPnTjqpqqy0RArNcdBjlXWlsLijxpsrtF1L5Pnnn9dtvoCPJQccvuH+0PGbT7DamM9LL72krQkSbqgAQgBG5GAYIQQLOguPOuooe0R0zLkDeWDGgVBtCU7AYlQQ4jA9TJw4Me66uYJycF8Qwi64SWKqFBqCe7708gukrKxUXWGg1mtO1HRsCgtbVlt3nwtuFPLJ3XffHev4dWD2bT6B4z7Mtoa5zrHXXnvZWDyYQHjZZZflbaIbWYIxP6q00Bnc0o1p6kMyxoVVV13VHm0dDjrooCbXRHjuuedsjnjOOOMMPW4EbMbg54PDODiLKy8v13RTo43W1ddFa2pqokZBaMg33333Xezz+PeVS8C5qZzBnX/++eoQzyhPmxJw7733RqdMmWL3WpeuXbvqPa611lo2hSyNZCO72QJo58C5mQPuBoxwTurvv6Vg4hKGehoBp8MTfTA80bxrcsABB9iU5oPyURaCMwehNQAwRr4wUqjmH+RDyDdnn322blujbICRPPhc/tBaoyC1nwZuohcHmMgHWjqSiyz5UAG0c+BSwHUSYrbuM888o6NJsJ8P4G0SK1bBRz182vhce+21ep0bbrjBpuQHJ9wh+CEs0RcAH0MYLom0fH22RDDSCf72Fzf4vhYnX3zxhUybNk1deJD2DRVACEg2qicfNdi//e1v0qtXL12xyueWW25RIZxvO3YiTgkgONcMTjm0Bsccc0yrlZ0OLBaDiWe+YoPSw7NPdCGRL/r0oQfgMEAFQJoFhK5bQcrxxBNPqJDKZShjS3ECGa0bCEXst7QF4JSKD1bUwhrArdW6yMT6669vYwEYuYXW188//9wqJj0SDqgASFZgJA8EvAMjcODaAfZiDCWFYITv+LYQkE4JwE6eD/DZ3FwBeDBFTRtLKGJZTVwrH0qmpcBFM0ZtwWVzqrH/hGTEvMhp4SigcIPlAPGauPDBBx/YI/kjl1FAqYK7vwcffNCW2nymTZsWveGGG3RJSleuf3+Iu2P+PWQbcF6uS0Lmgmm96PaHH36ILly4UOMkfHAUEGk2p556qtZ0YX/2ac7IEOfa2Lxvum0NcK8ArZJNN91U3SW42cLpwL3BjIJ+DPjRWWONNbTPBHMnYFJyuPLxGbBgOzqfWxO3bkJzwL3CoyiWdMS8j912203mz5+vx1rzOyBLH1QAJAYm/mAlMQgQTE7ywfKSmEWM0T65gHWFcc4pp5wSE6KthSt/1KhROsENo4IgzHEPEOyYBAUXCBCIWPcY+XFv6EjFSCY4s/v111+1DBzzgwNxPCcIUj89n2A2sFs5DUt7Ngd/PQGMXuratau6426teyZLJ1QARIEbYqxx61ancmAMOoQd3BXgeK5MnjxZtz/88INuk5HPWikEnBNyENRwbAdHa1ig5pNPPtFZvPC9M2nSJM3j487NJCSzydMSfIdte+yxh+yzzz52L3suueQSXXfY54UXXrAxQgKoAEKML3gxP8Dnuuuu0+NY5aslYDz5lVdeKe+++65NaUprmFOcgMbWdepiIhwWmHef2wlyFxYn6T7zPffco2Ysx8svv6whV7DoPD4rFpfBWsN+Jz4hinlB0sJO4PbHiy++qK4FfOBGoX///tHbbrvNpuTOiBEjIFmja665pk3Jjvfff1/PC1MwrRP76VPz8MMPx/JXVFTY1PwzfPjwJu8DWfrJRnYX4I95wVIyZeofssLynBTSXoCNG/ZwgFo/XEPgFchHDRirU7klCjO8Vk2Aszi4kCgtLbUp+QGfC/eCFoCr6bslJtsCXBsd7FhCszXAp8rlm4S5CS6iwWOPPSZHHHGExsnSTzaymwogZGCCE3ziA6wx6/sKailz587VzuK///3vTbxbkmaAuWi5GGnNL7nBSP9cTsHcBqd0v/32W51bQNoHVAAkJZg5m+/admvw1VdfyYYbbmj38gde+8Vt928Jc8aPlHkT3paFM36UmnmTpCBSJNH6Gilfdl0p77mm9Bqwm3Rcbj3N24AWT46fbWl5H0j2ZCO72QkcUpaGHzsE9EYbbSTnnHOOTYnn4IMPlp9++snuNTJ27FhtiSRbZhEzaOFpM1H4X3zxxTpyBvh1Iji4gw+gRNcQi4vxb10on1zTQ8a9cLjMHjNc6maPlcKGeonUVeliN9VTv5a53z4iPz66q3x+00ry+4c3x4S/fgr3WTLcPoV/OKECIDnx/vvvx2zpufLhhx/qeUOGDLEpqXEuiQF83iRyzTXXaJ/BWmut1UQ4Yzz/008/rcss+mBEE1w7QKE899xzNlV0hBI8lmLkEya+uc8GB3NwcQ1XF/k0lSXF6Rz7UaZ8frd8PKy7zPv5FenUo7+UdFpOiko7SqSwxNT+C7UFUIDRTcWlJnSW0q7LS3mnnjL3y3vl4+v7ytyJH2lfQLQZ3xMJD1QAJCeGDx9uY/E15UxgDL5bjSqTS2UIYtTiHa5j2adLly42JrH1eR2p3BhjBq9j+vTpNibq68fhp2MWrSNZSyOvODltfpHfPrKLzPjwOunUa1UpLDH3nCjETQugesGfUrVwrlTOnSZ1NVjmM2qEfaFEyrpI52595dcn9pKfX7sgUAJGQeqc/+y/LhISqABITmBZQbhbeOihh7JuBWBmLhYwd2CN4HT4E5awlgFIVDYY4w53D/DQ6U9Qw4QvxyabbGJjAf4Eq80339zGJM6lsnOZ4EALwPHOO+/YWJ7xPtpXdwyW6IJJUlS+nJX76LBvzBCNNkhtbaWsc8w7ssl5Y2XTCyZI55W3ktpF8wIdoi2IqJR1X00qfn5Gfnj2CG0pFCA9u6+LhAgqAJIzcCkAu3i2YH0Ax4knnqhKJB0wz+y00046a9etZZBM2ey444669q+Pv+h94gpkixYtsjGJG4aJyWEO+N338dfNbe6i9gD9DieffLLdS8B+tG8f2tWI+2opLDYtj2CglqVAnFejusrZ0n+3O6W85wCpmjvZ/IJLZPW975PCLiuYmn6tOQ8/aRMKolLccVmpnvK+jH9zKH/pJCkcBURaxLhx49Tk4lwlb7311rLVVlvZowFwxwBBCrcGic7lWoOrr75afeEkKhrMeXC2/8TX3imY5ZZbTu/XgXzONXT37t11cfVcgWM3+PYBmOGbzH//5M/vkb8+vFaKOsHXUoqqurnlRfOnyYanf63C/cOhBdJj3f1lrUP+I3+NeV4mjbhIisu72cyOAqma+ausddKn0qlX6yweQ5ZMOAyUtBrw8YOO0USTiQNKIZkPG7xufm3e38eIm3ysG5yK33//XZ2+QRFg7V0f9A+4voTEnwT6CFxHdLKfy8MPPyzHHnusxlP9nPzPjPxwzaDVelvT/2hYd+nSaxVkDBISQKlwJF0x7w/Z7JwfpaGks3xz4woixWWy0T/GScX0H+THR3eR0i59/GIDovVSXV0hG5/9S5PnT9ovHAZKcgITgWBbR20+HR9//LF62HTCH1434XrYX0YQXjfhAyiRROHj9rGFvd03ueSblVdeWWccJwp/4HcqJ4KJbQ6MLkrE93Pkjy7ygTnLETOfWSk97s0LpeMyywUSPgWxIw31UlDaWerrqnQeQEND8F1FisoliniDKcbrM1DQOVxbKdPHDKfwJ3FQAZAYgwcPVrPJfvvtZ1Oa8ueff8ZMPLCjQ6BCEYwZM0Ydv6GGiaGZ4KqrrpJHH31U4+nA2sIOZ25JBmrOcDeRjssvv1zvMVfSDfOEp1RHsn4Av48DrQuQ2BKAm+1Uym36qAeksBgd2fjsyZVAxEj2qKnJF5ZBURVI7dxJUlBULAX1wZoFJV16S6S8t1RXzpT6ivi1BHArhR17yNSPW+bYj7Q/qABIDPiMB264ZjLcrNzi4mJ1t4yWQCJw/ezWsFVTRxo+/fTTuLWFYQZKBkxOMLNgSGiqNYehwGD/b86C5g8++KCef++999qURrDsoiPZ/fXu3TvumcHddLKaNjx6wjTmd1TPmTBSSsuN8I/lD7bR+jqpr14gdVXzNdQaoV45e4IMPDjw2jrj2yekqLSbqfl3kBljXtSO443OGiMbnztBlh9yhVTPn+amFGjRmDdQN3O01JpyCXFQAZAY8OWDmuv555+fdOYrhlyilg9gLkqHP5rmqaeesrGm+G6o4b8eiiUZRx11lI2JrLde4PIgkUz3lA6Yh77++msdpZSMHXbYQbep3FL4Hc6HH364jTUF/SL+sNW540dIYWlnuwei5tnXSp15/MtucpL03ugU6b3xiUaoD5NNL50jnfsOlqpZv8r0rx6QSEkHKe7YXSa+drpMfPdK+WvMCzoSaLnBR0nvTU+XaM1CW2agVgpLu8qcn18KEggxUAGQpCQzxWDmrcOZeQBmB/fs2VP9zvugwxWkGz8/bNgwrT1feOGF2v+QTPH89ddfcZPHkrUqUOt2+MoiX7z99tuq/DCCJ1lHL5QS+kEAOowx9yEbFs340dTOPaVniq6rnCcbnvGN9N38HFlhq7NlhS3PNUL9CBXi0z6/W769f1vpsMzyUq99BgXa8Tv9i/tk4v/OllH/DGY/9xq4j9RWx3fQY9ZwlWlFEOKgAiBZ44QzhL3PWWedpcMjsXqYD0wjIN3iJzA7jRw5Ul0xgGSKx584BpfFyXjllVdsTGTPPfe0sdxACwfLJ6bCmZZSdaT6rYBMpi9HDcbyFzSO2WloqJeSbitrfPa4d+XHp/4uvw4/WsY8urt8dtMq8ucnt6jwl2iB+fEWSEPtIlm0aJ4MOvIFkbLeUhCt1l6Esq59TWsg4VkaRVMzv6l/JBJeqABI1jjBlzgkEnZ3kDjqByYl4NxP+yQbC58MXMMfWZPKXz06iB3pOrHTgXH+WC842SihbNh+++1j4/3hOgLDTjNRUNg4CQ3gEUfh09lQv2imLJr6mSz64yupXTBZOnReBnLfHG9Qt8818/6Qku5ryGbn/iY/vny+FEeMoi0olYaaCiPrO5hfN557Y2tFSy1IbmIj4YQKgGSNP64fo3+gECCgMboF28RJXnDVABI7lbE0I1wxQGBm4qSTTrIxkZtvvtnG4oErY3RIg1VWWUW3ufLbb7/ZWDDMtbn4ZrBsZks31CcZcuuGg5qWQWFRmYgJhZFSqa2cL6vt+7A0mJp85R+jpf/ut8pah70gX962tmlmzTHfR4k5qdbI+I4SravSIaNW7MfQoaKEWKgASNbABOJcL7iO2FTmELhycPjmEKyGVVsbDF10LYR03H///TYmcu6559pYPH7tP92KVvfdd1/smol2fN/7aDb3lQq4qHagbwRmpXR0WHZdI5QTTWSN94YYfqSo+UdMa2H22Pdk8Mmfy6ZXVkvPdQ6Qr/61ihQXFxlFUW7yNuiooIjJWzlvivlu4j9jQ0OVlPdq7LshhAqA5MQXX3yhW4z9h8nECXMfdP6i0xTceuutugVwG3H33XfbPYkb/pkMv09h6NChNtYUf5JVKvPPYYcdpq2Jbt0CVwmpFBeA2+qWAEXjgMJLR4cea4o0aQUkuTcjyyMlnWTWNw/IuFfPUSE/6l+rSlFpF5HCkkBlNNRKh76DNXvFjB+lqKjUpHtKoK5OipdpOmyXhBe6giA5A2+dvqAdMGCADqNEbdcpCIAhlf64el/oot/g0ksvtXvJ8fOne02zydevXz+ZNGmSxlPlWXfddXVCG1ovb731lk1tHv49ofM8lcKp+HO0LuYCf/4A4/+lrKsMOu59mTFmuEwZcYEUlXdXBaCmIdMUqK+tkNrqKinrhD6BQj2EmlzlnImy+oHPSPdVh8iPT+0nNXN+M60GKAFzqgmLZo6TzS7FJDH3+ZPfE2kf0BUEaRXgGgFj5h1YaB4C0xf+MN34wt+f7YtRRJmEP9YEcDg/O5nYeeedbawpyRaVSQRrJMP+31LhD6699lobk5QT1yCHsYxjA5Z3NEopqoOszB+rLKL11VK3aK7UVs2Tusq5waSw6nlqMoLZp666QurNsYbKWbJo1u/SY91DVPjX1SyUhRM/UuGvF8F/08ro2L9xQhuFPwFsAZAW8dFHH6kJBo7UMNpniy22aGKGee2119QTqCPDK6dkW/sHMC1hstlll11mUxrBuSjLlQfHbvAUmojLlw3wlYQhn6n6JByZPgPkPWpgv39ws8z95l6JlJoaPfoDSrrIoONHysK/fpb540ZIQVG5KSBwBWH+GHlu7tWchxILCiJSaPJ3W30nKekYDLv99p7NTOGVEjGKpcFcAW4kauZMlv6HDJceK2+teUj7JxvZTQVAWh1fEGIymb/ISircOehUTeaALVd23XVXnSwGv/yYt9ASll9+eZ0Utuqqq8atXJbIeeedF/MTBB9F8I2Uik+uX146dutjBHuB1Cz4Q9Y+8RMp75qbvX7O7x/JhFfPQAlSWNQ427je1P4jZd1l0HHBZLom3kJJu4QKgLQ5MMu44aBY4N03E6UDtnj4znELtS8OMJQU/QCY5exPLEsEI6HmzZun8Qw/n4ytAAfW8P31ib2lrMcqpmbfINXzZ0jnPuuZJkKR2TftBJRjAiZ/Na7za1oCmBNQVykVM34yP+YGKe7U0+Qw4j122QKpNMc2GDpLioswTJSEhWxkN/sASKviL66SrfAH8M65OIU/wGxkmJPg8TOdR1Hf18/zzz9vY8nxVwG76667bCweqIVl+m0lXdY/TuoWTFcBXtZlOamZP1Wq5/wutXPHa4duzeyxUjX7N6me9asNv0nVnLFSa1oMpR17Sknn3kZHQFkE5UJhVMwcK6sc8IQK//SqioQRKgDSqsDbJ8wfrsa8JHPOOefoQvDwCoqVwVKB2cIOf5H8ZPhCP2UntW0ZrLn7jVLabxupWQilaaR4YbFpAJRIQWGJRArLTMA2IURKNZ+2EMw59Y3SXyr+Gisr7TRMeg3c26YQEg9NQCQUOLfVbihoIvgZJJpr/P1E3DFskzmwywn8AlGc3Y4bMVRmfvZvKe+JFcIKVT+kuZU49MdcXyNVs8ZJ/wOekt4DW2+BHbJkQxMQaRO++uorOeWUUzKuLLa4wExhrCeAAL//yUgU9umEP+jfv79uoSha3Lqxl8JsX6iSVXe6TtY++VOpqVokNQv+NAfqsjLfYNho9dyJImXdZIOhsyn8SUaoAEjecI1JdPbec889sv/+++t+WzN69Ggba76voET8uQnZjlKCooC/JPguagJq+Wbj1A4WcN/onJ9lpd1uk/qiLqZG/5vULZgp9dXzpKG2Ur2AYluHOQIVM3SSV6TbarLqQcN1Ehk7fEk20ARE8g5cRGBWMLxqYnGZtgbC2vkL+vHHH2XgwIEabwmYCOcWh4Ft31+PIBVu9BC2mXwEAd8MVVdfJ7N/ekkq54wPXDoXFJnmQq369ilZpp/0XqOxXwI/aKdISHjJRnZTAZB2D9bjff311zWO2je8keYD30yU4WekOFcTAO6wN910U41nJguR7maVGTjOnwD2AZClAqyzi1aD79QtnzihC/Il/MGQIUNsLFgHORO+k7hUS08mJ4v6vPdLpvAn2UIFQNoczAyGSSQ3oZg9qUb+tJR9993XxrLrB8AaCOXl5RpHv8T48eM1TkhbQQVA2hTff4/vLyifuKUcMbksnxxyyCE2FqwZnA1+K+Dss8+2MULaBvYBkDYlVzt6c8CaBfBOmsk3f3PAEpCzZ8/WGb/+Wgfp8D9zfX190nWQCWkp7AMgSw3+0o+ZgMnozDPPtHvpgVIpLi5uFeEPsBg+TEzZCn/gLxtZl2bBfEJaG7YASJsCr5ovvviinHbaaTYlPfDXc/HFF2t81KhRsvHGG2t8aeOxxx6TQYMGaSCkNchGdlMBkKUK59YZwNFcOp89hIQZmoBIu8OfcLWkCH83uWtpbY2Q8EIFQJZK/DH4bc3NN9+sSuDLL7+Mc39NyJIOFQBZqsAyjFiA/pFHHrEp6cFY+/XWW0/+/e9/25TMYDGYtddeW0aOHGlT0jN06FBdRGafffaJDTklZGmAfQCkXbPLLrvEFnnP8KrHcMM0IczRSU3I0gj7AEjocev/HnDAAbrNhmHDhul2ca9IRsjihi0AQghph7AFQAghJCVUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVACCEhhQqAEEJCChUAIYSEFCoAQggJKVQAhBASUqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVACCEhhQqAEEJCChVADixYsEDOO+88+fnnn21Ky6isrJSFCxfavdx477335D//+Y/da8qVV14pn332md1bcpg5c6aNJef999+Xk08+2e41D5yPcnKlNZ7p2LFjbayRH374QU4//XS7l3/w2Y866ii717bk+5lOnjzZxkg+KIgabDwpU6b+ISss38fuhYuSkhI58sgj5YEHHtD91157TfbYYw958MEH5dhjj9W0E044QY9neIxJ2XLLLeWTTz5p1rkFBQWy//77p/xx4TiOIU8mDj30UPn999+lrq7OpsTToUMHqaqqkoaGBpvSyLRp02TKlCl2LzO4ryOOOEIee+wxmxLPxRdfLDfccEOznokD10A51113nU3Jjnw+U8c666wjEydO1MqDY+jQoXL99dfLpEmT5I8//tA0lF1RUSGrr766LL/88prWXPA9FhcX63t53HHH2dS2IZ/P9Mknn5TDDz+8ybtx6qmnSteuXe1ecvD+4re7ww472JT2TzayO7QKAC/MN998I6ussor07dtXHnnkEdl5553t0QC8nPihXnTRRbr/z3/+U+Nz5syRZZZZRtMA8oFchdY+++wjL7/8cs7n3XXXXVqDXGONNaSsrExmz56t6WhN4Njzzz8vL7zwgqy77rqajpZGdXW1xiFkzj77bLnssst0H/Tq1UuFzl577aU/FB88p3//+9/6Ay0vL2+iBObOnSv33Xef3UvP//3f/8lZZ50l8+fPl86dO9vUeG6++WY5//zzW6wArrrqKrn88sttSmby/UwduJdPP/1UNttsM5sisummm8qoUaPsXgAqGzU1NXL88cfL/fffb1NTg3cWQt69ew48t969e8uXX36p+/g8id8pwPcGJYzvHCSW0xwgnB9//HG71zrPdNlll5WVV15ZPv/8c5sS3DvS070zuCYU7yWXXKL7qHyNHz9eFbAfb09QAaRg8ODB8u233+oL869//UvOPfdc+fHHH2XgwIE2h6gQgjDyHw9aA3jBkz0yvIR4kUePHm1TMrP33nvLK6+8kvbFTQautd1228miRYtUkNx+++1aE4eAhmLCD+ecc86RPn36yAUXXCC77babbLLJJrEfGBTd3/72N1taoADQkklVY8b1cJ2NN97YpjQPd98wCzggGFZccUWNFxYWqnKdMWOGrL/++lprxjn48cL0hu8pG3AOlM0ZZ5xhUzLj7i1fzxTst99+MmLECFV4PrgWzDTbbrutTQlA+kMPPSTHHHOMTUkNFCmeXSSS3IqLY1DWUCqJ4H3DfUNgu+8Un8+v1DhKS0vl448/1tYvKkA4L9n7imew/fbbx1WiWuOZwqSGVlKuv5lEunTpou8XyvHj7YmsZLf50GmZPGWajbUf8LHNCxeLm5qUxn2Q/o9//MPuBSBtgw02sHvxTJ8+3cayx9S+tMxcMD+quHMQf/vttzVulJruG8Gj++C4447LeI2ePXtGzQ9R47vvvrvmzzZki6nVan4jDGxKwIYbbhg1P3wNRiFG11lnHc136KGHxtKNEIk++uij9oxo9LPPPou7h1zDWmutZUsKaI1nCpDnhx9+sHsBX331laabFoo+cyMENVxzzTWaPmvWLJtzycG08LL6vD75fqZFRUXR/v37R9dee+3ojjvuGF111VWjK6ywgt4bMK2C6GqrrRZdaaWVmgScd88992g+B65lWg1N4u2JbGR36DqB33jjDd2ihuQwQt3GAlATAWgdoBbjAvj666/j0lxAE9TFUVtqDdBMRfloHjtOO+006d69u8YHDRqkW9esB7ADr7nmmjJ16lSbkp6OHTtqn4B5N9IGtBaS1RhTgRYGasSo/QF8DphoYKrA80J46aWXtH8AwN7r0tFiQOvL4b67Sy+9VDsRUY4L+M4AaqO4R//YjTfeKJ06dZIePXpoHtBazxTXR0vTKBs1t+AaADVg1HpNhUFNM6jpoqbuTELuutly2223adm5hFxBjTwXWuOZ7rvvvrLLLrvIVlttJUb4y2GHHaZ9T3iOAH1YOP+UU07R/jkX0HKcMGFCXD/Vu+++q9s77rgj9tzxboSR0JmAPvroI32R0JyFfRJ2VNi3n376aZtDtD8A/QPdunXTHycEzgcffCBvvvmmmFaBNhnr6+tt7njQ3D3xxBNlwIABNiU1MAGhzGQ22nSgU/GWW27RzlncI36gKAMCGZ2f+JGgswtp+CHCJgz767x589Q0kghMQDAH3HrrrXL00UeLqW2rjRnCKRmwV8Nein6DbDqAN998cx3p4V419KPg+WM0FezDPsOGDZMrrrgiljcZ3333nZqI8Ll9Re7AZ0b5MCskAnOTqRWqWcMnn8903LhxYmqjsc8AGzOEIcyOqbj33ntVof311182JTtgkoRyzPAzVu688041i2WT18f13eR6Xr7fUx8oPihSd084/7nnnpMDDjhA931wDO8UKgsA78bVV1+tpkU/3t6gCSiPGKWBN83u5Qc0gVFmujB8+HCbuxFTa4kawadNYCOEY8EIUz3H1HCj/fr1iztmBHrU/MBsCfGYH2f0/PPP1/jBBx8c3WmnnTSeDlOji5oand1LzQ033KD3ZGrecZ/rmGOO0eM1NTVRo2iitbW1um9q7Xoc4BjSE81GzoQwY8YMmxIPjsHEkow+ffpEt9hiC7vXSL6eqRHgmh+mCpj4YJpwnwfbXEI2mMqK5p00aZJ+hlThxx9/jJqKSdbl+tx+++2xe9pnn31samZw3Xy+pw5TKdPzn3jiCZsSPFv8noziiJrafCw8+OCDeswoV5szPGQjuzkMNEtQi9hzzz21ZoKOSh8cQy3GH+mRDWjWwuyBzmZ/mKADrQk0Y9G0zRbcC0ZYYGhctsAsghretddeGxuZhK37nGi6G0Gs94jyMYLnf//7n7aCUrWEHDhnyJAhalZDywu1YdQInXngpJNOymoUEWrVGLEFXAsAncVovSSCe0w1Cggtm/79+zdpAaQj12eK/Icccohss802apLAgAKYGNACwGdHDRjPHOYh1JIxcACtKrQ2sYUZDmajbL53IwRjZrNMFBUV6RDRDD/5JrgWAEYNOVMcngWeSXNpznvqQMc0ng3eAwe+UwwiSNbpjc994YUX6rsWJrKR3VQAWYDRJ862nA4MWYMJI1tgAnr11VczClEH7J0Q0hAeyYBgwYsOIWtq8aqU8GPxBTW2rgnuQB7YSlE2bKkQQBAsGKUCgbX11lvraBE0l2EWgo0X+xDu6623ni0lM07h+a8cxsJDkOPHmwwICigLmJHciBenAPA8YDZIJBcF0FrPFKQyZ2H0C0bEgMRjeKboK3nrrbdsStuTaAKCMnd9abhPPBef1nymGKkH0yG+YzwrvKskOTQB5Qk8JgQ0t8G8efNiAcB8ksWjbEKuo4DGjh2r+c0PI2WAyWG55ZbTOJrUyG+Eqza3kWZ+MNFBgwbZEgOQZ+jQoXYvGjPXmNqi7mN0xQknnKBxI9D0mBs1lC133323njdz5kyb0nycCSgVOHbHHXfYvXhWX331OBNQaz3TKVOmNLlHjEZBGkY6AfdMHEcddZTuG+Uae7fSYVpF0fLycjWjpAumtqz3Z5S13i9GIuWCMwH54NpIQzDKWM14jtZ6pptssknsmmeeeaZujfKIpWUKt956qy0pHGQjuzNKn7ArgCFDhujLk26YGtJPP/10u5c9uSqA5oDy8QNOB/JgmKWpzWkcP0gfDKU77LDD7F40+uuvv2o+hMmTJ9vU1Lz88suaF/0GsMua2rzuY2gfQF/CgAEDVED6wQ3tM013zedwCqC5Yfvtt7clNQ+Ukc0zPfbYY1VRIo7hrl9//XV0/vz5NkdUnymObbbZZrpF8O3amUB/A56pqU03Cddff33UtFr1e/UFJ/p4Zs+ebUvIjmQKwLH//vvrsWzeg3SgjHTP1ClP07KI3Qv6WaBEsH/llVdGx4wZE/3pp5+iRx99tPb1mNas9kNMnTpV8zz55JN6XlhgH0ALwRBFmDpgD3/xxRe12Qk7NOzRjhVWWEGHrmV4jElpzkSwX375Ra8Hu2Y6UCbuDaNRMLsU/nFgSkG/AkZf+M1zfC6M0oFNFumY+Qsw3A7mHoChcxja6GMUhY5ewRT7VGDCU+J5GGZqfryy66676hBcXB/9A5jgg74GB0aOwC0ERoq8/fbbNjUYimsEqppXMAoItnMHzoFdGZOIUCbMCw70XcD8gmt+8cUXNjX/zxSfx4HPCJOJPynNjcbBjGA8d+RHGegn+PPPP8W0DGzO5oMZ7DAvwtUI7gHDJjHSqzkkmoASQbr/mUE+n+nuu+8ur7/+upqWjIDXyWXuXjBiyLQY5Nlnn5UDDzxQ06655hqdTY3+FQfuD2ZNPIewQBNQCzAvG94wDQ7UnLCPmjtwrYPffvtN93OlOS2AQw45JHZfzQ2okTvQdEcaapOpQO0qkXT5E8GEugkTJti9puD6L7zwgt2LBxN+MPHHxwgXTUfzPxkoD6OPkoHRIDfffLPdC8j3M8X3ilZSIrfddpvmhakDtVVgBL6mPfzww9E333xT49kwcuTI6DfffKOtisTg3l20nDCKCuYovKN+fqMA034nPulaAKnI5zPF9+wm1L300kt6zAf7RslFL774YjVlwoQGM9Lll1+u796wYcM0Ty6tq/YATUDNxDUZE1804GyfvXr10q2pGdsjudNSE9Do0aPV/poOlA/Bkwr/B/XGG2/E4tiaGqTGMZQPtmYfDB1FX0E+wLVS/ThXXHHFJgogEygv1TDQTOTjmSbiBD+AkHeYWqumQ5k5EyL2YcbIBPK1NGQ7pLM5CsAnn880lQIwrSkdBnrQQQfp84R58cgjj9TfGLbIQwXQFLqDTgBDIGHaAGiGJoIZvwiYsINZrc6RVXPAJLRUvlyyAZOoMIoGzdtkbocdGFKYCt+pFmZj+kMK0bQGbgKPm9w2atQonbCDyTPJJlulAveIyWZwVYx79s0GqUwFLXk+zSEfzxS88847avpBOTA7YQQVcL5y+vfvL0ZYxXzeOHMFzGmJo2qSYX67aQMwAjXpMRdg1lwc5OuZpgMj9eBc7plnntGh05jwhwmN+D1jS5JDBeABYQh7PxQAfiDObQGAbRrzAGCThN3x+++/1zjGoWOYJJzJJYIyMHMYMxATA+y9v/76q+bDENNkeRDgwXD48OGaLxGMGZ81a5bazhF8J2vZgunwmLkMcB3MinRgxrMDdnZ3v7BdQ5CPGTNGbrrpJp01nQoM+3TCHveI5/Hf//5XhSLstg4ICAzvQ1kuwIaM545zFxctfaYYZ4/7Na0WfU+cu28oSqwDgKGwOI7hs0jH9fAcnEM8CGXMroY9vKW0RKDmk3y8p5lw7h4wQx3KFIoVzx/vbHuc5Zs3zEuYlrCZgNBcdZiXKWoEog5Nw6NCSGxGmhpH7BgCRn24IYiYyeofa27Ycssttbx0YAYlnG1VVFREb7nlFh2y6kwM5513ns0VjxtC98EHH0Qvu+wyjTsQhxO2Sy65RIe5XnTRRRpcPtiZAfbr6+s1noyPPvpIHehh9A9moyYD5aULpiZtc2YHzmmuCcinOc8UYKRNMrp27aqjgdDvAjMjhmO6maquTwBg9A5mtOYChl7Czo/ROJghjTLd7O6W0lITkE9zn6kjlQkom/D444/bM8IB+wDyAF4cdPaamplNSQ6EqLM1PvTQQza1bfBfetjQ58yZY4/E8+WXX2qeZLz//vtqP91oo41UaLkwePDg6F133WVz5Qfcw9NPP2334sEwUCiiXEB58LCZT9zzREj3TLPlsccei5WXas5CLiR6SMXQ2nx5FnWeSvONf7/ZPlOnLHyw7+bopAJ52vp3ubjJRnZzGCghhLRDspHd7AMghJCQQgVACCEhhQqAEEJCChUAIYSEFCoAQggJKVQAhBASUqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVACCEhhQqAEEJCChUAIYSEFCoAQggJKVQAhBASUqgACCEkpFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRkoQCidksIIWTpIbPsLvh1+FrR8u7rSknXNaSk82pS3HF5s11FijutrBmmzWqQvj3YUCCEkKUJX3bXLvxdahaMl9qKqWY7Vmrm/SKVc76XgvGvbxeVaJ00NNSJNNRItKE2Fi8q6SIF5StLx26rS1Hn/kY59JPi8j5SsswaEiks14IJIYS0LQ31lVIz9xeprfzDCPnfpc4I/IrZv0m00sRr5otESiQSKZKCSHEsLgVmf8Ib26dsJ0Sj5lC03mxrjWKAUgiUA+IFUm8UworaUijpZBRDJ9Nq6NBHijquIKVdVjeFF9pSCCGEtAgjc6tNzb22YorULTJCfuF4qVk40WwnmDBZohDmRqirYDdCHvGCAiPsjRwuKCiwhTQlrQLIRNQoB6N6pMG0IKAc0HqAckB6gTQYBQHlsJJRDiaY1kNRx75SVGZaEF1WkUhRR1sKIYSEm4a6CqmZP17qqv6QuoppRtBDuE8yQn6S1uijEjGCvDAm4BEiRuhLBAK++ZXtFimATCQqCGixBrQoEDfb4vJlrXIwLYkOK0iRaUkUlfawLYt+thRCCFm6qUVtvWKy1FXPkjrEF03RfQj52so/jSQOau0RCHMr5PMh4DPRqgogE9FogyoC7XNQJYHWA0xMRnFg3zRdijsYZdDRKIeOy6uSQCd1YUl3sw1aFoQQ0paoEK+YJPU1s812qgr3OmwrjJBfNBmCzsgymGggzCHUTTDbwA6PtLYbZNOmCiAbtBWhSsIqhZiSgNJAWlRNS8UdEIxysNui0p5SWN5bSkxrIlKyjC2NEEKyo6FmrtSYWnp95QxTc59phPlUqV80TWrMts5sYapBJVWFuBHm8cLd1NpVuC/ZfaFLvALIhkBJNOg26Ky2SgL7aGU01JrvpVyKjGIoKV/OKIk+Umy2RWZbWNJDCst6BS2L0h62REJIe6W+epbW1Our/jK19llBp2rln2ZrQuU0rcE31FWrGQa1cwhxJ9wDQQ/hHqQv7bQLBZANwYgmowzEtSZM8BSFKhCjKNBMw1DXovJlTQtiWSkqM6GDURZmGynurIqjEKGka1AwIaTNqa+ZZ2rqf6ogb6hdIHVV0wOBbrb1lSZuAoZIwrysQyETBDtq61prFyfcU4+caU+ERgHkQmOLAkoB8cDc5PonXN8FlEVReW8TjIIo7WmURC+JoDVR1lsiJd1Mi6KrSTPHjCIpKCy1pRNCMhFtqDYC3Ajuqj9NjX2eNNTMkdqqGdJgau11CNUmqGCfEfxGVZgbwe3s7FpLd3b3iBXqS3+NPd9QAbSQOGWhcRNsCwP7DVZZqMIoLDEKoadRDCaYbVGJCeU9JYKRTzA/FXUwiqS7Cb30OJUGaQ9E66ulvmpmILSrZ4uR7FJbPUsaTKivnCm1NTN1W1+NPDNN/horwE2t3AluBNTQzTaouVOo5wMqgMVJNCpRgUJAMDGrGIIQKBDXunBKpSAS0dZFpNS0KIqXMcrDbEu6B1sTiky8oKhcIsWdzH4PE8wx0/rAj4OQvGHexXpTC683AhwBZpZoXaXU1WAf6Sa4eO1cI9znBMK8wbzDVlgHwtsJ9GA/EPJuv0AK4J4sJOaXJQEqgKWAQCmYYJQH+jJcq8NXHOaPbqFgCmwczd/C4q6qKAqKu5h4F6Mogm1hiYmXmGMmXoA4pocXdTTHTVpJZ91CqZCln4bahSbMMwJ6gRHO84zgrpAGuH2pmW/250sD7OcubgK2UeSvNsEIc7WbGyEdtQI6EOAmHhPcwRb7ge0cadg3W7JEQwXQzgmUB77iYAsFEVMoCEg3tbSgZWKVC4Bi0TTU4MzP3iiDSKEJxR1Ni6NDoCxMKDCh0KRFCqE8OgTHIuW6LSgsM3IAQ+JKREwrpVDPMemRUnOsVIxmMueZOGy2IQR9Sg311RiWYnS5CQ3V0lC3SOqNgBZTu1YhjYEK9VVGaC8y+5XBFnlqjRA3+VSY26DxWnO8HgLf1NCjGKLoatWBMI4Jb6SZ1qUT1k5gN9bAgy2FePuGCoBkhY6iMioBSkKVhom7tMYRVoHCULCFQsE5TrkgrlvNoC0VbPGvAH9x2PxTuy8UA4bhqRLBFoqiRLeqUAoxRA+1UqNgMHLDtHYwczKqnX4I6Ai0wgzBlI18kInYV0Fn/gbgqsE9Fph8DWKUIA7pDSFAaQajxQpMbTiY2W62Jl+BTTcSORDYEORRu4VrFAhv3RrhDmWKf3o7GjMXMZ8cCXYvuDcT0zQIZBt3gli3+FwQ2MhjctitE9qNaYSkhwqALJEEykVjQdBdG1dcGoAAd9hY7PxG/FzeyZZGgalCN5GYQA22/t9g4x83IZYWpFMgkyURKgBCCAkptl1JCCEkbFABEEJISKECIISQkEIFQAghIYUKgBBCQgoVACGEhBQqAEIICSlUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKvYGSJQ/zRupaypZkrpQb3UXHE9FFTppPQ0PjdWOYy2OdAF1LIPGy2Ee6O5YsT0qSZE5xPlxUx7uzbh54lnRNTRxsAZAlDl04xQoqJ6yCRWeChVsazNY/7ufLB7Ey8c9uTaRx3w8Ru3XHEvMk7scF71oupMhvkpOm5xrwHKHkkio6EjqoAEir4gscDUa4x+17AQuIYwtBlYimaXqBRPzjXqUYeRLLRGg2qPZ7F3Cx7GriNo+WkUhjSf6mabHJzvWAUswRpwgan1X895OqZUXaJ1QApFVRgeIJHf3n73tBFx03IT0Jx7ELmWXlVmKZzQcF4ufhLuCujMUckW7S7DVj2xhIMLnx2aM2b1zmoCYelG+2TknY28VekNJ47abgPHtCHCZdr9s04JrBdYOA0wvMtf3n1ZiHhAEqgBCCmna8QGhK2mOxP9kRJ6ZSVchNeXH5UL4fLHEVav+YO9ml+flaBApKJmgNLrnJjSPBBF2TGGn4g58anju2ELbup2fzes8aayXreslRCGSbqDR+Z3oYwdTgG78nbHHNSLDOsF7fBVwT6yQXBnlciCmoACqBcIFvn4SIaLRBCku6mp98UfBDx7+Epr8zBSBo3IRGM0GQX005SYREWrGBg5A5wV4c2sHqESze7oVkJEmPnddCgnt0d5p4x6nSHbgBaDqn7SD4683WfHi9N8TNuXo6/pgAga1g38RVgNtkzWL+GGFdgEXvNRTpVtDpDaGu34XJjM5zXAtCX8/Bvr2PaK3JgWtjH8EcR/kJOCVA2j9UACEDNc+62gUxeWPqhUYMNP3B+2YBZG7cD44FZzbFpTUVH+kFSlxZyeVSAIpxRWEb3EoQNzJNz0s8niX+Mwg+XeN+I4npiPv7OA7hiq2LQ0i78+w+4gV+PrPvikLQP/a4ZsEWyrhegzTUmWAEugp3k2b+Ku670XSTGnxhNo7aPwjy2AslBd8xFD5p31ABhAz8qGFGaYjWqQgAKh8sqOH7+6kIZErQQtCaZkbMCea/yxl3RjanO/DGJrs/pLm32R3HNlZ20isnxbV+8LGC0GgWUSWR2Dzxmi+ax26DS7ljQV4kB9hzFSSauO6aPIU41+Z15WkIlDAefrBfaA7XS2FpD5OEuL1H1P4jJea43deA8tCyw9bsq+kI5eBapjBLY/6gb4C0b6gAQgR+1IqpSRZAaCX9fSNPdj/8wM5saoqQIdYs5NASsOuKQrEmYNeFGHE7Bn/f3rLix0HieUmIF2K40dQnIS/mEaCVhG1jMMe8fVzXF5Qo0j1blIFni6273cTbbop3T4imqXibq5ksgZI2T978KRKpmW32G4L7MwcKiztIkQl6ZeTDPWlnLz6bFewRXMiUBv2NGoH+p9APG1QAIQJCSn/gkEjB79/+0UhMiGUF8uqp5g8ECIQLRFOsDLPF22XzQbjgiArMWPD3g3iQ2ey7vBrTHb2O+6f7eiyI6z9sXbD7jQIN22yEG65jt7GN+SC4jG5NmeZfo3KISKGpfWOrghZ5zPkmm9nXEoLiLL6AtVdoguZBNt2aMlGWy6zaxgYcM5t6rc3bwwh11VJXM9/EcD+uf8BHcwWX0C3KsslIM8rBfR7SvqECCAlq+nE/aPdjh6lAX4EgOIEJ4QmhESdQEfDPxiF5IlZQRGI1SyQ7oRFcJKIdlk5gWsGi8cZ9P47z0KLwwa6GWMQEbMw2tmv+4NpalleDb4K7vZSoONQtQKsm+LxmJxrY2tH5HXSI2xCtk7qGeiOITV5rj8fzsHeWkky3knhcFYFGdDeGfmf6cII4gLnHPA0TQ4cw0vC9anVfA1opaMFFzXMPVIF3fvrbJu2IJL8QEgpUTuCXDgEH5WCEtRUkKjisAI0LnmBtFPQA5bgORh8/T0BQfmpQbmGhub4n0JBft14wf4KtFVZx95TuAknAPQWC3BfqwTYoE52vEO7mYua/M6O4oAJVlSAKc5fH3yDWYlxRfpGpioaAh9DH89M8+BM8JHOXwWF7kxD9EfPZNId+ruD7d8+DtH+oAEIAhFcgnRKBYLDpGg1q0CrggtQYTjDGDwl1wQgMFZhBPhUiapYwhVqBolFTDgSlpitIjBc0esj8ccrG5Q02tiwtKcAppNzAdRvLQJkqzPEPWy8eYPfNP/yPe2YIuosyXXzxg8sGw3KTCe7Gm4LQ133v8wMn/F2chAMqgBCQTi6p8IPQj7gcjbmdgIfQd4LR/InFNbh/thWBOEpQQW2C1ptNgsa0vHo9T6+DSUiRYo3rtVQZoGszUChomYBAMFmxj1uA+cKVb+8xMQQjXoI8ftBycN3Y2PkscY/Hx0uDwgs+V7KMwXX06u5e9D5Sh5zBtXGefbYwvcXKcRuUrffn8gXBpQX3T8IEFUA7Bz/5TMT/7M2eOQVC1Al5He2TChxyAX+C/6pQXDJOVyWBHeCEHIza5jpBriAPzBdBXj0zdg8a8A82DPz305ME2DoCgYfLBdfTa9oyg+ub3ZZiyyg0SlQVj9eBEVwPBJnwN3aP5p9rvSDoPdvjoPFcfVw2ov+bEH8VgM/ntQTsgeC6JrdeA2chmLRkhZJQQAXQzsFPHvgCxaEy0Aocn0Sl0TSHJZYNEbxK3nl6PaS5dASUZO6ouIMUFJWZJIijwF4NIZhYa2/ExLHv0uKOGXQ3Ic1cKhB42Lo/ppZbWGZbO42Kpwn2+smeWSLI4XKpKcpIU229QLGZ4p0pLC5oCyVovWAL9F7978K/NSehTVqyO3Zpei9eucm+28bc2CKYs+zG4e7JbUn7hQogBLgaZuwHbTZo9kcKiwO56IE8qYVHArEsiCQIVJyvM11dOgKubwJms+I65lhBUUeJWnNFJFJk7qms6f3iXC0viGrw0X2X6M6JR8fmFxZJQ90iI4CRkqCw4rBlYZMqiwWy2b8dnUOADmF8BhzRXxhyBAIeIVJYGMQxAsd8RgjsJspAz7H7+jczsWdmr5MZkxfmMD0Hm8bv3m+VkPYLFUBIcD9q/ZEjAf5ionU4gr0YTgCkJJBJjdsYyc5Bmp8exKP1VVJQX2Oug1tYZPRE0C+gZouGGuSI3UNwGfxFcGVh23ik8ZifpxGVbxFTphGyEND43Jg4lSyvA9dXIZw6S0CG48GkMMQC4QqcsHf9Bn4AmkvzusIz3YQhKDooJ4imwWRGfjWn4X3AvQXnUvCHCyqAkIEfuAuZBIsKKRtiuFNaIiMghFXIWKFnBU5jPNgH9kgspujtuCMQZulf41gZ9jqJ1wD+Z9V//n5LgvnnRLITrNi6oJh8cWA//vYyk1N+89Qg+BHMtXAfFPzhhAqANCEmuKxgQPCFmskRtx+kpSDNoZxxZTm5qQnBKxx0epoDJim4pyC7bjPINfcZWyvgtvAsUz6nBMEbCOIMN91M3PcFpeSG2lLwhxcqABJHTHDBju0Jhli6CozGeLAf5HPCRQP++VsbchU2/rmxf1bIm6jZNpiNGvVjeQKwtcEltSH43Ah63znizok9A/vZs0XPsyHxOyPhhovCk1YHgocCJwD2/1TPwj0nbB0uLwR/YEqCImkU6tmAMvj8STLYAiCtDoVPElCJt0LcCXJXM3e1dLevabZF5h6lS08X/DIISQYVACGLEQhkFfhGJjc6yWuekPaFfbJASCaoAAhZzDiBj3+EtCVUAIQQElKoAAghJKRQARBCSEihAiCEkJBCBUAIISGFCoAQQkIKFQAhhIQUKgBCCAkpVACEEBJSqAAIISSkUAEQQkhIoQIghJCQQgVACCEhhQqAEEJCChUAIYSEEpH/B6fj7FR+FdkKAAAAAElFTkSuQmCC
<<list-links "[tag[done]sort[title]]">>
\define droppable-image-actions()
<$action-setfield $tiddler=<<actionTiddler>> $field="icon" $value=<<currentTiddler>>/>
\end

\define colour-demo-body()
<$droppable actions=<<droppable-colour-actions>>>
<span style="display: inline-block; width: 1em; height: 1em;background-color: $(currentTiddler)$;">
</span>
</$droppable>
\end

\define droppable-colour-actions()
<$action-setfield $tiddler=<<actionTiddler>> $field="color" $value=<<currentTiddler>>/>
\end

`droppable` 小工具建立一個 DOM 元素,使用者可放下拖動的項目,觸發指定的操作。其只適用於支援拖放的瀏覽器,通常指的是桌面版瀏覽器,但也[[有變通方法|Mobile Drag And Drop Shim Plugin]]。

有關概述,請參閱 DragAndDropMechanism。

! 內容和屬性

|!屬性 |!說明 |
|actions |拖放項目時執行的操作 |
|class |要分配給可拖動元素的可選 CSS 類別。類別 `tc-droppable` 會自動新增,且類別 `tc-dragover` 當項目被拖動到可拖放元素上時被套用 |
|tag |可選的標記,將覆寫預設的小工具呈現在區塊模式時的 "div" 元素,或在串聯模式下的 "span" 元素 |

在 action 字串中,[[actionTiddler 變數|actionTiddler Variable]] 包含被拖放的項目的標題。

如果多個項目被拖放,則對每個拖放的項目重複執行一次操作。

! 範例

此例顯示一個圖示的調色盤。將一個條目拖放至其中一個圖示上,將分配該圖示至該條目。

<$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]sort[title]]">
<$droppable actions=<<droppable-image-actions>>>
<$transclude/>
</$droppable>
</$list>

同樣,此例顯示一個顏色的調色盤。將一個條目拖放到其中一種顏色上,將分配該顏色用於呈現條目的圖示。

<$list filter="LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black">
<<colour-demo-body>>
</$list>
为了区别每本书的聚合和与书相关主题的聚合,利用`field`+ `变量`进行设置,这需要对`field`进行规范。 

!! 书籍聚合

 ```
field:book_title=书名  Author=作者  Series=系列   Genre=流派  Location=国别  douban =豆瓣书籍链接  cover =书籍封面链接

```

!! 主题聚合

```
field:topic=维摩诘、 topic=系统更新、 topic=大历史 、topic=文言尽逮 、topic=Thought Framework 、topic=Thinking Models、topic=Laws of reading 、topic=Art and History、topic=Lifehack、topic=botany
```

!! 相关人物

```
field:relation=人物名称
```

!! 备忘Note
 
```
field:topic=note
```
格式:

```
<div style="background:#c8d4d7">
{{!!note}}
</div>
```
!!描述


```
@@.note
''Keywords:'' {{!!description}}
@@
```

\define fa(iconName)
<i class="fa $iconName$"></i>
\end

\define falg(iconName)
<i class="fa $iconName$ fa-lg"></i>
\end

\define fa2x(iconName)
<i class="fa $iconName$ fa-2x"></i>
\end

\define fa3x(iconName)
<i class="fa $iconName$ fa-3x"></i>
\end

\define fa4x(iconName)
<i class="fa $iconName$ fa-4x"></i>
\end

\define fa5x(iconName)
<i class="fa $iconName$ fa-5x"></i>
\end

\define fafw(iconName)
<i class="fa $iconName$ fa-fw"></i>
\end
@@color:green;<i class="fa fa-tree fa-3x fa-pull-left fa-border" aria-hidden="true"></i>@@
这是一个图标宏FontAwesomeMacro 基于本地图标库$:/fonts/FontAwesome,调用http://fontawesome.io/icons/ 图标。用例:http://fontawesome.io/examples/ 

图标库和图标名字查询:http://fortawesome.github.io/Font-Awesome/icons/ 

https://fontawesome.com/v4.7.0/icons/

更多用法:https://fontawesome.com/how-to-use/svg-with-js

基本用法:

* html -  `<i class="fa fa-apple"></i>` for <i class="fa fa-apple"></i>
* macro - `<<fa fa-apple>>` for <<fa fa-apple>>

```
<<fa fa-tree>>
```
<<fa fa-tree>>   


```
<i class="fa fa-weixin"></i>
```
<i class="fa fa-weixin"></i>

```
 <<fa "fa-spinner fa-spin fa-2x">>
```

 <<fa "fa-spinner fa-spin fa-2x">>

```
5x size 
<<fa5x fa-apple>>
```
<<fa5x fa-apple>>

修改宽度:

*Html - `<i class="fa fa-at fa-fw"></i>` for <i class="fa fa-at fa-fw"></i>
*Macro - `<<fafw fa-at>>` for <<fafw fa-at>>
\define textSlider(label text)

<$reveal type="nomatch" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="show">$label$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="hide">$label$</$button>

$text$

</$reveal>

\end

\define textSliderNoButton(label text)

<$reveal type="nomatch" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}$label$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}$label$</$button>

$text$

</$reveal>

\end

\define tiddlerSlider(tiddlerName)

<$tiddler tiddler="$tiddlerName$">

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show">Show <<currentTiddler>></$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide">Hide <<currentTiddler>></$button>

<$transclude/>

</$reveal>

</$tiddler>

\end

\define tiddlerSliderNoButton(tiddlerName)

<$tiddler tiddler="$tiddlerName$">

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}<<currentTiddler>></$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}<<currentTiddler>></$button>

<$transclude/>

</$reveal>

</$tiddler>

\end

\define imageSlider(tiddlerName caption)

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $caption$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $caption$</$button>

[img [$tiddlerName$]]

</$reveal>

\end

\define listSlider(filter closedCaption openCaption)

<$reveal type="nomatch" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

<$list filter='$filter$'>

</$list>

</$reveal>

\end

\define exampleSlider(text closedCaption openCaption name)

<$reveal type="nomatch" state="""$:/state/$name$""" text="show">

<$button set="""$:/state/$name$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$name$""" text="show">

<$button set="""$:/state/$name$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

$text$

</$reveal>

\end
Google File Stream 默认緩存位置在C盘,而之所以要使用Google File Stream是因为你手里有一张Google Drive王牌 ---
 至少5T的网盘。如果你不修改其缓存位置,之后C盘会被撑爆。所以,必须修改其缓存位置,具体办法如下:

1. 先把默认的缓存位置全部移动到新位置。
默认位置一般在这里:

```
c:\Users\用户\AppData\Local\Google\DriveFS

```

新位置看自便,我的新位置:

```
f:\DriveFS
```
2. 退出Google File Stream;

3. 以管理员身份打开CMD输入以下命令;


```
mklink /d c:\Users\用户\AppData\Local\Google\DriveFS f:\DriveFS
```

4. 重新Google File Stream,搞定!
iVBORw0KGgoAAAANSUhEUgAAASwAAAEtCAAAAACXSgIMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wOkNyZWF0ZURhdGU9IjIwMTItMDEtMDJUMjE6NDk6NDMrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDEyLTAxLTAyVDIwOjUxOjAyKzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAxLTAyVDIwOjUxOjAyKzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4NUQzOTI4RTJEQTUxMUUxQTUxOUMxMjQxREQ3QTA3QSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4NUQzOTI4RjJEQTUxMUUxQTUxOUMxMjQxREQ3QTA3QSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjpp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
<$list filter="[tag[Journal]]+[!sort[created]limit[15]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<<< 
<<steps Journal replace>>
@@color:gray;  //※:点按箭头随机上下一篇//@@
<<<


 @@color:gray;  <<fa fa-tags>> @@ <<tag Album>>  <<tag Book>>  <<tag Reading>> <<tag Thinking>>   <<tag "Thought Framework">>  <<tag Tools>>  [[标签云|TagCloud]]

@@color:gray;  <<fa fa-info-circle>> 点击<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>进入导航模式或进入点击 <$button message='tm-full-screen'>{{$:/core/images/full-screen-button}} </$button> 全屏阅读  @@  
!!! ''读书笔记五要素:''

#清晰地表现每一章的逻辑脉络;
#带走书中所有的亮点和核心思想,并用自己的话以最简单的语言进行概况一下;
#写下自己的看法和心得;
#发现这本书和以前读过的其他书或文章的联系;
#问题和疑问进一步的实证和挖掘。

!!! ''写作五要素:''

1.简练 ; 2.精准;3.优雅;4.兼具韵律与节奏; 5.同时营造氛围。

<<imageSlider [[http://i66.tinypic.com/noys77.jpg]] "读书流程图">>

!!! ''关于"书的书"书目:''

<$details summary="相关书目">

<$list filter="[field:genre[读书随笔]] +[!sort[created]]">

《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》</$list>

</$details>

!!! ''相关阅读笔记:''

<$list filter="[field:topic[Laws of reading]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link> @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@ - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<<tabs tabsList:  "[[Book List]] [[2019读书目录]] [[2018读书目录]] [[2017读书目录]] [[2016读书目录]]  [[Add Books]] [[Manage Books]] [[Library Tracker Settings]] [[日志涉及相关人物]] [[想读]] [[正读]]
 [[三家村公开版权精品书籍]] [[BookStore]]" default:"Book List" class:"tc-vertical">>


<$button message="tm-close-tiddler">Close Me!</$button>
\define thisRemoveAuthor()
Select Author: <$select tiddler='Library Tracker Settings' field='edit_author_list'><$list filter='[[$:/data/BookAuthors]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookAuthors##$(AuthorToRemove)$'>Remove Author</$button>
\end

\define thisRemoveSeries()
Select Series: <$select tiddler='Library Tracker Settings' field='edit_series_list'><$list filter='[[$:/data/SeriesTitles]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/SeriesTitles##$(SeriesToRemove)$'>Remove Series</$button>
\end

\define thisRemoveGenre()
Select Genre: <$select tiddler='Library Tracker Settings' field='edit_genre_list'><$list filter='[[$:/data/BookGenres]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookGenres##$(GenreToRemove)$'>Remove Genre</$button>
\end

\define thisRemoveLocation()
Select Location: <$select tiddler='Library Tracker Settings' field='edit_location_list'><$list filter='[[$:/data/BookLocations]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookLocations##$(LocationToRemove)$'>Remove Location</$button>
\end

\define thisRemoveTag()
Select Tag: <$select tiddler='Library Tracker Settings' field='edit_tag_list'><$list filter='[[$:/data/BookTags]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookTags##$(TagToRemove)$'>Remove Tag</$button>
\end

<$checkbox tiddler='Library Tracker Settings' field='show_author' checked=true unchecked=false>Show Author</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_series' checked=true unchecked=false>Show Series</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_genre' checked=true unchecked=false>Show Genre</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_location' checked=true unchecked=false>Show Location</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_tags' checked=true unchecked=false>Show Tags</$checkbox><br>

!!Edit Author List
<$set name=AuthorToRemove value={{Library Tracker Settings!!edit_author_list}}>
<<thisRemoveAuthor>>
</$set>

!!Edit Series List
<$set name=SeriesToRemove value={{Library Tracker Settings!!edit_series_list}}>
<<thisRemoveSeries>>
</$set>

!!Edit Genre List
<$set name=GenreToRemove value={{Library Tracker Settings!!edit_genre_list}}>
<<thisRemoveGenre>>
</$set>

!!Edit Location List
<$set name=LocationToRemove value={{Library Tracker Settings!!edit_location_list}}>
<<thisRemoveLocation>>
</$set>

!!Edit Tag List
<$set name=TagToRemove value={{Library Tracker Settings!!edit_tag_list}}>
<<thisRemoveTag>>
</$set>
<<list-links "[tag[Life]]">>



The listSlider macro is contained in [[GeneralMacros]].

|!Input |!Description |
|filter |The filter that defines the list to display |
|closedCaption |The text to display when the list is hidden |
|openCaption |The text to display when the list is visible |

The listSlider macro is used like this:

```
<<listSlider filter closedCaption openCaption>>
```

The macro will display the `closedCaption`, when it is clicked on it will display the `openCaption` and display the output of the input `filter`.

The macro is defined like this:


```
\define listSlider(filter closedCaption openCaption)

<$reveal type="nomatch" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

<$list filter='$filter$'>

</$list>

</$reveal>

\end
```

<<bottomOfTiddler>>
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
\define thisSeriesSelect()
<$select tiddler={{!!book_title}} field='series' default='None'>
<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisGenreSelect()
<$select tiddler={{!!book_title}} field='genre' default='None'>
<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisAuthorSelect()
<$select tiddler={{!!book_title}} field='author'>
<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisLocationSelect()
<$select tiddler={{!!book_title}} field='location' default='None'>
<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisTagSelect()
<$select tiddler='$:/state/booktag' field='selected_tag'>
<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisBookSelect()
<$select field='book_title'>
<$list filter='[tag[Book]sort[title]regexp:[(?i)$(thisBookSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisRemoveBookButton()
<$button popup='$:/state/test'>Remove Book</$button>

<$reveal type="popup" state="$:/state/test">
<div class="tc-drop-down">

{{DeleteBookConfirmation}}

</div>
</$reveal>
\end

Book: 
<$set name=thisBookSearch value={{$:/state/newbook!!narrow_book_select}}>
<<thisBookSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_book_select' placeholder='Narrow Book List'/> (<<thisRemoveBookButton>>)
<br>

<!--Author-->
<$reveal type=match text=true state='Library Tracker Settings!!show_author'>
Author: <$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>
<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>
<<thisAuthorSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/> (<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/><$button><$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add author' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Author-->
<!--Series-->
<$reveal type=match text=true state='Library Tracker Settings!!show_series'>
Series: <$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>
<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>
<<thisSeriesSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/>  (<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/><$button><$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add series' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Series-->
<!--Genre-->
<$reveal type=match text=true state='Library Tracker Settings!!show_genre'>
Genre: <$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>
<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>
<<thisGenreSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/> (<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/><$button><$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add genre' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Genre-->
<!--Location-->
<$reveal type=match text=true state='Library Tracker Settings!!show_location'>
Location: <$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>
<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>
<<thisLocationSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/> (<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/><$button><$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add location' setTo='notnew'>Done</$button>
</$reveal>
</$reveal><br><br>
<!--End Location-->

<!--Tags-->
<$reveal type=match text=true state='Library Tracker Settings!!show_tags'>
Tags (it will always be tagged with `Book` by default):<br>
<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>
New Tag: <$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>
<$button>Create Tag
<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>
<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>
</$button>
<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>Done</$button><br>
</$reveal>
<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>
Tag to add: 
<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>
<<thisTagSelect>>
</$set>
<$fieldmangler tiddler={{!!book_title}}>
<$button>
<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>Add Tag
</$button>
<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>
(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)
</$fieldmangler>
<br>
</$reveal>
List of current tags:<br>
<$fieldmangler tiddler={{!!book_title}}>
<$list filter='[{!!book_title}tags[]]-Book'><$view field='title'/> <$button>Remove Tag<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/></$button><br> </$list>
</$fieldmangler>
</$reveal>
<!--End Tags-->

!! ''Books''
* 穷查理宝典 [[Poor Charlie’s Almanack: The Wit and Wisdom of Charles T. Munge|http://www.mymentalmodels.info/a/amazon-poor-charlies-almanack]]r by Peter Kaufman
*查理·芒格传  [[Damn Right: Behind the Scenes with Berkshire Hathaway Billionaire Charlie Munger|https://www.amazon.com/Damn-Right-Berkshire-Hathaway-Billionaire/dp/0471446912/ref=asap_bc?ie=UTF8]] by Janet Lowe
* [[Think Twice: Harnessing the Power of Counterintuition|https://www.amazon.com/Think-Twice-Harnessing-Power-Counterintuition/dp/1422187381/ref=asap_bc?ie=UTF8]] by Michael J. Mauboussin
* [[More More Than You Know: Finding Financial Wisdom in Unconventional Places|https://www.amazon.com/More-Than-You-Know-Unconventional/dp/0231143737/ref=asap_bc?ie=UTF8]] by Michael J. Mauboussin
* 寻求智慧 [[Seeking Wisdom: From Darwin to Munger|http://www.mymentalmodels.info/a/amazon-seeking-wisdom]] by Peter Bevelin
*投资的格栅理论 [[Investing: The Last Liberal Art |http://www.mymentalmodels.info/a/amazon-investing-last-liberal-art]]by Robert Hagstrom
* 影响力 [[Influence: The Psychology of Persuasion|http://www.mymentalmodels.info/a/amazon-influence-psychology-of-persuasion]] by Robert Cialdini
*清单革命  [[The Checklist Manifesto: How to Get Things Right|http://www.mymentalmodels.info/a/amazon-checklist-manifesto]] by Atul Gawande
* 巴菲特致股东的信 [[The Essays of Warren Buffett: Lessons for Corporate America|https://www.amazon.com/Essays-Warren-Buffett-Lessons-Corporate/dp/1611637589/ref=asap_bc?ie=UTF8]] by Warren E. Buffett and Lawrence A. Cunningham
*投资大家芒格  [[Charlie Munger: The Complete Investor|https://www.amazon.com/Charlie-Munger-Complete-Investor-Publishing/dp/023117098X]] by Tren Griffin
* [[Psychology of Intelligence Analysis|https://www.cia.gov/library/center-for-the-study-of-intelligence/csi-publications/books-and-monographs/psychology-of-intelligence-analysis/PsychofIntelNew.pdf]] by Richards J. Heuer, Jr. [Free Download]
!! ''Articles''
* [[An Introduction to Mental Models|https://www.farnamstreetblog.com/mental-models/]] by Farnam Street
* [[A Dozen Things I’ve Learned from Charlie Munger about Mental Models and Worldly Wisdom |http://25iq.com/2015/08/22/a-dozen-things-ive-learned-from-charlie-munger-about-mental-models-and-worldly-wisdom/]]by Tren Griffin
* [[An Investing Principles Checklist from Charlie Munger|https://hurricanecapital.wordpress.com/2014/06/10/an-investing-principles-checklist-from-charlie-munger/]] by Hurricane Capital
* I[[n the Footsteps of Charlie Munger: Accumulating Wordly Wisdom|https://hurricanecapital.wordpress.com/2016/01/06/in-the-footsteps-of-charlie-munger-accumulating-wordly-wisdom/]] by Hurricane Capital
* [[A List of Top 100 Mental Models for Business|http://robdkelly.com/blog/mental-models/a-list-of-top-100-mental-models-for-business/]] by Rob D. Kelly
* [[Latticework of Mental Models|http://www.safalniveshak.com/category/mental-models/]] by Safal Niveshak
* [[First Principles: Elon Musk and Bill Thurston on the Power of Thinking for Yourself|http://jamesclear.com/first-principles]]
* [[Mental Models: How Intelligent People Solve Unsolvable Problems|http://jamesclear.com/feynman-mental-models]]
* [[Two Powerful Mental Models: Network Effects and Critical Mass |http://a16z.com/2016/03/07/network-effects_critical-mass/]]by Tren Griffin
* [[Wordly Wisdom in an Equation|https://dl.dropboxusercontent.com/u/28494399/Blog%20Links/Worldly%20Wisdom%20in%20an%20Equation.pdf]] by Sanjay Bakshi
!! ''Speeches ''
* [[The Psychology of Human Misjudgment|https://hurricanecapital.wordpress.com/2014/06/02/the-psychology-of-human-misjudgment-by-charlie-munger/]] by Charles T. Munger
* [[A Lesson on Elementary, Worldly Wisdom As It Relates To Investment Management & Business |http://abinoda.com/clippings/Lesson-on-Elementary-Worldly-Wisdom.pdf]]by Charles T. Munger
* [[Academic Economics: Strengths and Faults After Considering Interdisciplinary Needs |http://www.tilsonfunds.com/MungerUCSBspeech.pdf]]by Charles T. Munger
!! ''Papers''
* [[New Mauboussin Paper: What’s Going On in Your Brain?|https://hurricanecapital.wordpress.com/2015/10/27/new-mauboussin-paper-whats-going-on-in-your-brain/]] by Michael J. Mauboussin
!! ''Video''
Charlie Munger’s “The Psychology of Human Misjudgement”:
<iframe width="560" height="315" src="https://www.youtube.com/embed/7-fe01CA3vc" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

or read it [[here|https://cogly.org/wp-content/uploads/2017/01/psychology-misjudgement-munger.pdf]]
<iframe width="780px" height= "700px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1UODI3QjAySE1JN1JONkM5TzdYVkI0VEZDUy4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>
本网站域名已通过微软全球教育机构认证和备案,具备`Microsoft Office 365 教育版`  一些实用功能,如果您需要一个教育版账号,请填写下面表格索取。(本站域名也开通了Google Suite,需要的朋友私信,但不鼓励使用。)

@@.note
<<fa fa-exclamation-triangle>> ''特别说明:''请勿用作开车、海量文件外部分享等非正常用途,一经发现马上封号!长久不登录使用将被收回。只供工作、学习之用!
@@

如果您想长久安全高效使用请不吝打赏: <i class="fa fa-weixin"></i> <$appear type="popup"show="微信!"  keep="no" $state="sticky">

[img[https://one.rizi.me/Photos/Other/赞赏码小.png]]

</$appear> ,谢谢!



<iframe width="780px" height= "880px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1URDFHWEo1UFo0VlJFV1pBQ0FETVlDMlk0NS4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>
<$list filter="[tag[Journal]!sort[created]first[]]">
<$link> ''<$view field="title"/>''</$link>  @@color:gray;  <$view field="caption"/> - 《<$view field="book_title"/>》 - <$view field="author"/> - <$view field="description"/> - <$view field="relation"/>@@
<$transclude  mode="block"/>
</$list>

@@color:gray;  <<fa fa-tags>> @@ <<tag Album>>  <<tag Library>>  <<tag Reading>>  <<tag "Thought Framework">>  <<tag Tools>>  <<tag 想读>>  <<tag 正读>>  

@@color:gray;  <<fa fa-info-circle>> 点击<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>进入导航模式或进入点击 <$button message='tm-full-screen'>{{$:/core/images/full-screen-button}} </$button> 全屏阅读  @@  

 <<tabs "[[Task]] [[Project]] [[Tools]] [[PKM]] [[Rizi Box]] [[Tips]] 
[[System update log]]">>

终于把Web Store功能搞定了,升级到PHP7之后,一直是残废状态。在PHP7环境下,只要把`store.php`文件中的:

```
// get options
foreach($optionArr as $o) {
	list($key, $value) = split('=', $o);
	$options[$key] = $value;
}
```
` split`替换为` explode`即可。

[[Store.php下载|https://www.asuswebstorage.com/navigate/s/8566F4B3EBF041DEA3FBF28E6F47822D4]] (密码修改为自己的)
''PKM(个人知识管理)'':

''流程:''收集、整理、消化和输出     ''系统:''信息、知识和经验   
''结果:''显性知识 →隐性知识

!! GTD:

* [[Keep|https://keep.google.com]]
* [[Google calendar|https://calendar.google.com/]]


!! 个人知识管理工具:

!!! 网络收藏夹:

* [[Google Bookmarks|https://www.google.com/bookmarks/?hl=zh-CN]]
* [[Raindrop.io|https://raindrop.io]]
* [[Google Save|https://www.google.com/save/]]


!!! 密码管理工具:

*[[Lastpass|https://lastpass.com]]

!!! 收集和阅读:

*[[Feedly|https://feedly.com/i/latest]]
*[[Poeket|https://getpocket.com]]  
*[[InstPaper|https://www.instapaper.com]]
*[[Kindle|https://www.amazon.cn/mn/dcw/myx.html/ref=kinw_myk_redirect#/home/content/booksAll/dateDsc/]]

!!! 笔记:

*收集和整理:[[OneNote|https://onedrive.live.com]]@@color:Orange;^^''1''^^@@
*私人写作 :[[EverNote|https://www.evernote.com]]

!!! 整理:

*[[OneNote|https://onedrive.live.com]]@@color:Orange;^^''1''^^@@
*Scapple 思维导图
*[[Cmd Markdown写作工具|https://www.zybuluo.com]]
*在线思维导图
**[[Coggle|https://coggle.it/]]
**[[MindManager|https://vision.mindjet.com/]]
**[[Draw.io|https://www.draw.io/]]
*[[Kindle笔记在线整理|https://my.clippings.io/]]

!!! 输出:

* [[事了拂剑去|https://mp.weixin.qq.com/s/ZrO7S4nP7CsDCRv-ULI_TA]]
* [[Reading Logs|http://rizi.me]]
*[[三家村|https://blog.rizi.me/]] 
*[[Twitter|https://twitter.com/coze]]

!!! 存储分享:

*公共资料:[[百度网盘|http://pan.baidu.com/]] 
*同步网盘:[[OneDrive|http://onedrive.live.com/]] @@color:Orange;^^''商''^^@@
*终极存储:[[Google Drive|https://drive.google.com ]]@@color:Orange;^^''1''^^@@
**[[DropBox|https://www.dropbox.com]] @@color:Orange;^^''1''^^@@
*其他:
**[[BOX|https://www.box.com]]
* [[RiziBox|Rizi Box]] @@color:Orange;^^'' 自用,请勿外链''^^@@

!!智能组合:

*基于[[IFTTT|https://www.ifttt.com]] 的Smart Life
*[[Autohotkey|https://ahkcn.github.io/docs/AutoHotkey.htm]]
*[[MicrosoftFlow|https://asia.flow.microsoft.com/zh-cn/]]

<$button message="tm-close-tiddler">Close Me!</$button>
.tc-drop-down dd
{
max-width:300px;
word-break: break;
white-space:normal;
padding :0;
padding-left: 5px;}

.tc-drop-down dl
{
padding: 5px;
}

tc-drop-down a {display:inline;padding:0}
<ul>
  <$list filter="[tag[Project]!sort[modified]]">
    <li>
		<$link><$view field="title"/></$link>
        <$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
</li>
  </$list>
</ul>


<$list filter="[list[!!quote]]">
@@.quoteblock <<currentTiddler>>@@
</$list>



增加一个样式:[[Quote Block Stylesheet]]

Create a new tiddler. Add a field named "quote" and its content as "世界是一个垃圾场."

Finally to the text area of the same tiddler, add the following code.


```
<$list filter="[list[!!quote]]">
@@.quoteblock <<currentTiddler>>@@
</$list>
```

.quoteblock {
	color: #f2f2f2;
	background: #ff4a4a;
	font-size: 75px;
	line-height: 1.7;
	font-weight: 700;
	margin: 0 5px 24px;
	padding: 10px;
	margin: 0 5px 24px;
	font-family: 'Libre Baskerville', Georgia, serif;
}
<<list-links "[tag[Reading]]">>



<<<.tc-big-quote
 ''Reading isn't about the destination, it's about the journey.''
<<<

<<tabs "[[Most Recent Journal]] [[Journal]] [[2019年读书日志]] [[2018年读书日志]] [[2017's Journal]] [[Thought Framework]] [[文言津逮系列]] [[Laws of reading]] [[植物志]] [[Art and History]] [[维摩诘]] " default:"Most Recent Journal" class:"tc-vertical">>

 


<b>Rizi Box</b> @@color:Orange;^^'' 自用,请勿外链''^^@@
<$reveal type="nomatch" state="$:/state/CredReveal1" text="show">

<$button set="$:/state/CredReveal1" setTo="show">点击展开</$button>

</$reveal>
<$reveal type="match" state="$:/state/CredReveal1" text="show">

<$button set="$:/state/CredReveal1" setTo="hide">点击隐藏</$button>

<iframe src="https://one.rizi.me/" style="width: 100%; height: 600px;"></iframe> 

[[Link|https://one.rizi.me/]]

</$reveal>

<svg width="220" height="140" xmlns="http://www.w3.org/2000/svg">

 <g>
  <title>background</title>
  <rect fill="none" id="canvas_background" height="402" width="582" y="-1" x="-1"/>
 </g>
 <g>
  <title>Layer 1</title>
  <path fill="#191919" stroke="#222222" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" id="path1570-7" d="m110,127l0,-7c0,0 -22.802829,-9.00777 -31.449309,-5.24181c-2.73426,1.19091 -2.73426,4.91933 0,6.11022c17.29295,7.53194 43.375249,-19.75237 60.668209,-12.22043c5.46852,2.3818 5.9433,10.29833 0,12.22043c-10.71441,3.46513 -29.2189,-10.86841 -29.2189,-10.86841l0,-5"/>
  <path fill="#191919" id="path2821-0" d="m113.0937,139.99839c0.56296,-0.00014 1.01659,-0.45736 1.01643,-1.02454l-0.00102,-4.16837l2.5506,-0.0006c0.17831,0.00032 0.34066,-0.16338 0.34029,-0.34301l-0.00099,-3.97129c-0.00086,-3.37306 -2.34099,-6.18434 -5.4777,-6.88255l-0.00163,-2.07351c-0.00019,-0.85062 -0.67961,-1.53474 -1.52394,-1.53452c-0.84433,0.00021 -1.5234,0.68467 -1.52317,1.5353l0.00163,2.07349c-3.13631,0.69983 -5.47502,3.51228 -5.4742,6.88531l0.001,3.97129c-0.00033,0.17965 0.16218,0.34318 0.34049,0.34283l2.55058,-0.00061l0.00104,4.16838c0.00012,0.56715 0.45397,1.02416 1.01694,1.02401c0.56298,-0.00013 1.01659,-0.45736 1.01645,-1.02454l-0.00102,-4.16837l4.14999,-0.00108l0.00105,4.16837c0.00013,0.56716 0.45396,1.02416 1.01695,1.02401l0.00023,0z"/>
  <g fill="#222222" transform="matrix(2.4863146,0,0,2.4844821,-1.1839191,-866.43627) " id="g1012-0">
   <path fill="#191919" id="path3035-9" d="m23.145204,352.06045c-1.23885,0.83211 -2.60803,1.86254 -3.71152,3.01185c-1.95791,2.03917 -3.89968,4.33806 -5.56858,6.63824c-1.12742,1.55388 -2.59013,3.91181 -3.3893,5.64625c-1.06351,2.30825 -1.69344,3.92536 -2.27714,6.46141c-0.82228,3.57278 -0.70889,7.23937 0.12627,10.69605c1.22875,5.08545 5.16129,9.34048 9.09106,12.79445c3.07428,2.70183 7.20752,4.46941 10.83906,5.76777l0.37524,-0.99159c-3.59833,-1.28575 -7.4122,-3.00324 -10.35851,-5.59575c-3.79015,-3.33536 -7.29088,-7.40271 -8.80097,-12.24952c-0.91975,-2.95038 -1.13325,-6.18745 -0.65067,-9.32219c0.42276,-2.74609 1.48555,-5.49821 2.52086,-8.00051c0.85116,-2.05699 1.84356,-3.6594 3.05408,-5.34714c1.53483,-2.14002 3.22142,-4.22698 5.01428,-6.13256c1.16057,-1.23349 2.71268,-2.34708 3.95926,-3.18434l-0.22342,-0.19242z"/>
   <path fill="#191919" id="path3809-3" d="m21.571394,400.04578c0,0 -2.55075,-0.80642 -4.57501,-0.56886c-3.21369,0.37714 -3.50995,2.37223 -3.50995,2.37223c0,0 1.28927,0.80039 4.05455,0.49623c3.23951,-0.35633 4.03035,-2.29964 4.03035,-2.29964l0.00006,0.00004z"/>
   <path fill="#191919" id="path3811-0" d="m17.227504,397.06626c0,0 -2.14964,-1.01965 -4.18773,-1.00454c-3.52839,0.02614 -3.73992,1.90022 -3.73992,1.90022c0,0 1.27714,0.92145 4.10301,0.88356c3.25876,-0.04372 3.82464,-1.77917 3.82464,-1.77917l0,-0.00007z"/>
   <path fill="#191919" id="path3813-2" d="m14.014154,393.93288c0,0 -2.04398,-1.79137 -4.021,-2.28676c-3.42265,-0.8576 -4.55631,1.13392 -4.55631,1.13392c0,0 1.27226,1.52637 4.01768,2.19676c3.16598,0.77307 4.55963,-1.04392 4.55963,-1.04392z"/>
   <path fill="#191919" id="path3815-7" d="m10.385314,389.10641c0,0 -1.74799,-1.84254 -4.14083,-2.57773c-3.12273,-0.95947 -4.59053,0.92422 -4.63337,0.97132c0,0 1.27958,1.61054 3.94922,2.31659c3.58085,0.94706 4.82498,-0.71018 4.82498,-0.71018z"/>
   <path fill="#191919" id="path3817-8" d="m8.656974,385.26543c0,0 -1.62796,-2.47905 -4.0561,-3.64917c-2.35874,-1.13731 -4.08193,-0.16876 -4.1247,-0.13081c0,0 1.21167,2.21431 3.44089,3.27537c3.02879,1.44171 4.74025,0.50435 4.74025,0.50435l-0.00034,0.00026z"/>
   <path fill="#191919" id="path3819-9" d="m8.132374,381.89483c-0.86891,-0.8174 -0.93364,-3.03916 -2.1756,-4.84206c-1.73261,-2.51524 -4.59061,-2.33292 -4.63338,-2.3092c0,0 0.30597,3.13365 2.47261,5.02764c2.30263,2.0128 4.3363,2.12382 4.3363,2.12382l0.00007,-0.0002z"/>
   <path fill="#191919" id="path3821-6" d="m7.892444,376.61289c0,0 0.08435,-2.72366 -0.6339,-4.79197c-1.00196,-2.88524 -3.73714,-3.45166 -3.78465,-3.44034c0,0 -0.44357,3.08518 1.14192,5.48676c1.68503,2.55232 3.27666,2.74548 3.27666,2.74548l-0.00003,0.00007z"/>
   <path fill="#191919" id="path3823-2" d="m9.050764,371.50853c0,0 0.54558,-2.28649 0.26919,-4.45844c-0.41658,-3.27347 -2.96393,-3.96643 -3.01259,-3.96169c0,0 -0.87326,3.03192 0.36904,5.62768c1.32025,2.7587 2.37433,2.79245 2.37433,2.79245l0.00003,0z"/>
   <path fill="#191919" id="path3830-2" d="m11.294894,366.028c0,0 0.88715,-2.06831 0.77349,-4.25476c-0.15778,-3.03449 -2.21397,-4.31644 -2.26277,-4.31821c0,0 -1.98258,1.78758 -0.84391,5.63541c0.69073,2.33407 2.33326,2.93763 2.33326,2.93763l-0.00007,-0.00007z"/>
   <path fill="#191919" id="path3832-3" d="m14.149704,361.52212c0,0 1.31835,-2.03076 1.68307,-4.18963c0.34239,-2.02676 -0.47989,-4.23484 -0.66345,-4.43776c0,0 -2.14517,0.94279 -2.06486,4.56105c0.05403,2.43357 1.04528,4.06634 1.04528,4.06634l-0.00004,0z"/>
   <path fill="#191919" id="path3834-5" d="m17.657214,357.17416c0,0 1.57191,-1.67391 1.98136,-3.96271c0.33889,-1.8967 -0.00271,-3.95783 -0.3599,-4.47226c0,0 -2.05029,1.27389 -2.19926,4.49551c-0.11243,2.43154 0.41522,3.58885 0.57783,3.93973l-0.00003,-0.00027z"/>
   <path fill="#191919" id="path3836-9" d="m20.201604,354.50757c0,0 2.99572,0.10824 4.4846,-0.7562c1.66659,-0.9676 3.30208,-3.06783 3.43113,-3.68095c0,0 -2.62383,-1.15053 -5.07021,0.95106c-1.8464,1.58614 -2.70176,3.12707 -2.84552,3.48609z"/>
   <path fill="#191919" id="path3838-8" d="m16.900814,358.1217c0,0 1.4329,-1.67764 3.89514,-2.11108c1.89792,-0.33406 3.35697,-0.02562 4.29373,0.52021c0,0 -1.44516,1.85156 -4.21511,2.10681c-2.42388,0.22333 -3.61772,-0.36501 -3.97383,-0.51595l0.00007,0.00001z"/>
   <path fill="#191919" id="path3840-2" d="m13.939594,361.98979c0,0 1.36437,-1.60919 3.82668,-2.04256c1.89792,-0.33406 2.80926,0.00862 3.74602,0.55445c0,0 -1.15419,1.76603 -3.92414,2.02121c-2.42388,0.22332 -3.29252,-0.38213 -3.64863,-0.53307l0.00007,-0.00003z"/>
   <path fill="#191919" id="path3842-8" d="m11.065134,367.03586c0,0 1.27456,-1.98332 3.57922,-2.95255c2.36159,-0.99321 3.57454,-0.51896 4.59026,-0.13979c-0.32392,0.48587 -1.64951,2.51117 -3.79868,3.11914c-2.34221,0.66262 -3.9943,0.0616 -4.3708,-0.02681l0,0.00001z"/>
   <path fill="#191919" id="path3844-6" d="m9.359154,371.51734c0,0 1.12946,-2.0694 3.35881,-3.20102c2.28453,-1.15961 3.52825,-0.77334 4.56851,-0.46781c-0.28833,0.5078 -1.46563,2.62274 -3.5658,3.38294c-2.28886,0.82845 -3.97965,0.34718 -4.36152,0.28593l0,-0.00004z"/>
   <path fill="#191919" id="path3846-5" d="m8.463134,376.84334c0.97743,-1.25315 1.50881,-2.60037 3.01266,-3.94123c1.85278,-1.65195 3.44258,-1.12531 4.52154,-1.01863c-0.53114,0.99762 -1.32865,2.57577 -2.97681,3.7648c-1.9741,1.42408 -4.17079,1.18428 -4.55739,1.19512l0,-0.00006z"/>
   <path fill="#191919" id="path3848-1" d="m8.584454,381.75046c0.8311,-1.35461 1.2255,-2.41052 2.56987,-3.91126c1.65629,-1.84885 3.22657,-1.5206 4.31068,-1.53531c-0.41618,1.05076 -1.11766,2.62267 -2.62246,3.98867c-1.80236,1.63602 -3.87521,1.40388 -4.25809,1.4579z"/>
   <path fill="#191919" id="path3850-4" d="m9.653314,385.66329c1.25037,-1.93039 1.09258,-2.36728 2.31638,-3.96786c1.31435,-1.71899 2.97444,-1.67175 4.05387,-1.77341c-0.33057,1.08078 -0.82452,2.54282 -2.22562,4.01496c-1.49417,1.56994 -3.04832,1.36783 -4.14456,1.72631l-0.00007,0z"/>
   <path fill="#191919" id="path3852-2" d="m11.707664,389.49749c0.78826,-1.70787 0.65216,-2.77436 1.37495,-3.98494c1.18218,-1.98 2.34112,-2.06547 3.42055,-2.16707c-0.86099,2.46685 -0.66165,2.47824 -1.60946,3.98074c-0.92225,1.46204 -2.1754,1.6588 -3.18604,2.17134l0,-0.00007z"/>
   <path fill="#191919" id="path3854-6" d="m14.184274,392.72169c0.44923,-1.82662 -0.0069,-2.38558 0.47262,-3.71152c0.78426,-2.16863 1.90585,-2.47282 2.94624,-2.77775c-0.11964,1.4558 0.06099,2.37941 -0.75498,3.95735c-0.57622,1.11427 -1.76907,1.83665 -2.66388,2.53192z"/>
   <path fill="#191919" id="path3856-7" d="m19.176124,389.13555c0,0 0.90097,1.73946 0.60169,3.75545c-0.42402,2.85643 -1.95045,3.28438 -1.95045,3.28438c0,0 -0.86939,-1.29828 -0.78101,-3.93261c0.09438,-2.81387 2.12979,-3.10728 2.12979,-3.10728l-0.00002,0.00006z"/>
   <path fill="#191919" id="path3858-2" d="m22.428114,392.04526c0,0 0.90165,1.76115 0.70441,3.78974c-0.25284,2.5997 -1.67655,3.25016 -1.67655,3.25016c0,0 -0.89684,-1.45126 -0.93507,-3.64158c-0.05831,-3.34457 1.90728,-3.39825 1.90728,-3.39825l-0.00007,-0.00007z"/>
  </g>
  <g fill="#222222" transform="matrix(2.4862629,0,0,2.4844666,-29.810169,-866.43003) " id="g986-6">
   <path fill="#191919" id="path3862-9" d="m77.804094,352.06045c1.23885,0.83211 2.60803,1.86254 3.71152,3.01185c1.95791,2.03917 3.89968,4.33806 5.56858,6.63824c1.12742,1.55388 2.59013,3.91181 3.3893,5.64625c1.06351,2.30825 1.69344,3.92536 2.27714,6.46141c0.82228,3.57278 0.70896,7.23937 -0.12627,10.69605c-1.22875,5.08545 -5.16129,9.34048 -9.09106,12.79445c-3.07428,2.70183 -7.20752,4.46941 -10.83906,5.76777l-0.37278,-0.99092c3.59888,-1.28656 7.41288,-3.00385 10.35919,-5.59656c3.78994,-3.33488 7.2902,-7.40203 8.80097,-12.24951c0.91948,-2.95045 1.13298,-6.1878 0.65045,-9.32219c-0.42276,-2.74609 -1.48555,-5.49822 -2.52086,-8.00052c-0.85116,-2.05699 -1.84356,-3.6594 -3.05408,-5.34714c-1.53483,-2.14002 -3.22142,-4.22697 -5.01428,-6.13255c-1.16057,-1.23349 -2.71268,-2.34709 -3.95925,-3.18435l0.22049,-0.19228z"/>
   <path fill="#191919" id="path3864-3" d="m79.383324,400.04578c0,0 2.55076,-0.80642 4.57501,-0.56886c3.2137,0.37714 3.50995,2.37223 3.50995,2.37223c0,0 -1.28927,0.80039 -4.05461,0.49623c-3.23952,-0.35633 -4.03035,-2.29964 -4.03035,-2.29964l0,0.00004z"/>
   <path fill="#191919" id="path3866-1" d="m83.721114,397.06626c0,0 2.14965,-1.01965 4.18773,-1.00454c3.52839,0.02614 3.73992,1.90022 3.73992,1.90022c0,0 -1.27714,0.92145 -4.10301,0.88356c-3.25876,-0.04372 -3.82464,-1.77917 -3.82464,-1.77917l0,-0.00007z"/>
   <path fill="#191919" id="path3868-4" d="m86.940564,393.93288c0,0 2.04399,-1.79137 4.021,-2.28676c3.42266,-0.8576 4.55631,1.13392 4.55631,1.13392c0,0 -1.27226,1.52637 -4.01768,2.19676c-3.16597,0.77307 -4.55963,-1.04392 -4.55963,-1.04392z"/>
   <path fill="#191919" id="path3870-4" d="m90.566694,389.10641c0,0 1.74799,-1.84254 4.14083,-2.57773c3.12273,-0.95947 4.59053,0.92422 4.63337,0.97132c0,0 -1.27958,1.61054 -3.94915,2.31659c-3.58085,0.94706 -4.82498,-0.71018 -4.82498,-0.71018l-0.00007,0z"/>
   <path fill="#191919" id="path3872-3" d="m92.295034,385.26543c0,0 1.62796,-2.47905 4.0561,-3.64917c2.35908,-1.13691 4.082196,-0.16866 4.125036,-0.13053c0,0 -1.211666,2.21431 -3.440886,3.27537c-3.02879,1.44171 -4.74025,0.50434 -4.74025,0.50435l0,-0.00002z"/>
   <path fill="#191919" id="path3874-5" d="m92.816924,381.89483c0.86871,-0.81733 0.93357,-3.03903 2.17554,-4.84213c1.7326,-2.51531 4.59053,-2.33285 4.6333,-2.30933c0,0 -0.30596,3.13365 -2.47261,5.02764c-2.30262,2.0128 -4.3363,2.12382 -4.3363,2.12382l0.00007,0z"/>
   <path fill="#191919" id="path3876-9" d="m93.060924,376.61289c0,0 -0.08435,-2.72366 0.63389,-4.79197c1.00196,-2.88524 3.73715,-3.45166 3.78466,-3.44034c0,0 0.44356,3.08518 -1.14193,5.48676c-1.68496,2.55232 -3.27666,2.74548 -3.27666,2.74548l0.00004,0.00007z"/>
   <path fill="#191919" id="path3878-5" d="m91.901914,371.50853c0,0 -0.54558,-2.28649 -0.26918,-4.45844c0.41657,-3.27347 2.96393,-3.96643 3.01259,-3.96169c0,0 0.87326,3.03192 -0.36904,5.62768c-1.32025,2.7587 -2.37433,2.79245 -2.37433,2.79245l-0.00004,0z"/>
   <path fill="#191919" id="path3880-8" d="m89.658464,366.028c0,0 -0.88714,-2.06831 -0.77348,-4.25476c0.15778,-3.03449 2.21397,-4.31644 2.26277,-4.31821c0,0 1.98257,1.78758 0.8439,5.63541c-0.69072,2.33407 -2.33326,2.93763 -2.33326,2.93763l0.00007,-0.00007z"/>
   <path fill="#191919" id="path3882-8" d="m86.798234,361.52212c0,0 -1.31835,-2.03076 -1.68306,-4.18963c-0.34239,-2.02676 0.47989,-4.23484 0.66344,-4.43776c0,0 2.14518,0.94279 2.06486,4.56105c-0.05403,2.43357 -1.04527,4.06634 -1.04527,4.06634l0.00003,0z"/>
   <path fill="#191919" id="path3884-3" d="m83.294114,357.17416c0,0 -1.57191,-1.67391 -1.98136,-3.96271c-0.33935,-1.89704 0.00231,-3.95816 0.35993,-4.4726c0,0 2.05028,1.27389 2.19926,4.49551c0.11243,2.43154 -0.41522,3.58885 -0.57782,3.93973l-0.00001,0.00007z"/>
   <path fill="#191919" id="path3886-7" d="m80.752434,354.50757c0,0 -2.99572,0.10824 -4.4846,-0.7562c-1.66659,-0.9676 -3.30207,-3.06783 -3.43112,-3.68095c0,0 2.62382,-1.15053 5.0702,0.95106c1.84641,1.58614 2.70177,3.12707 2.84552,3.48609z"/>
   <path fill="#191919" id="path3888-5" d="m84.053224,358.1217c0,0 -1.43289,-1.67764 -3.89513,-2.11108c-1.89792,-0.33406 -3.35698,-0.02562 -4.29374,0.52021c0,0 1.44516,1.85156 4.21512,2.10681c2.42387,0.22333 3.61771,-0.36501 3.97382,-0.51595l-0.00007,0.00001z"/>
   <path fill="#191919" id="path3890-7" d="m87.008344,361.98979c0,0 -1.36437,-1.60919 -3.82668,-2.04256c-1.89791,-0.33406 -2.80926,0.00862 -3.74602,0.55445c0,0 1.15419,1.76603 3.92415,2.02121c2.42387,0.22332 3.29252,-0.38213 3.64862,-0.53307l-0.00007,-0.00003z"/>
   <path fill="#191919" id="path3892-2" d="m89.888914,367.03586c0,0 -1.27457,-1.98332 -3.57922,-2.95255c-2.36159,-0.99321 -3.57455,-0.51896 -4.59027,-0.13979c0.32391,0.48587 1.64952,2.51117 3.79869,3.11914c2.3422,0.66262 3.99429,0.0616 4.3708,-0.02681l0,0.00001z"/>
   <path fill="#191919" id="path3894-0" d="m91.590144,371.51734c0,0 -1.12946,-2.0694 -3.35881,-3.20102c-2.28453,-1.15961 -3.52825,-0.77334 -4.56851,-0.46781c0.28833,0.5078 1.46563,2.62274 3.5658,3.38294c2.28886,0.82845 3.97965,0.34718 4.36152,0.28593l0,-0.00004z"/>
   <path fill="#191919" id="path3896-3" d="m92.484814,376.84334c-0.97743,-1.25315 -1.50881,-2.60037 -3.01267,-3.94123c-1.85278,-1.65195 -3.44258,-1.12531 -4.52154,-1.01863c0.53115,0.99762 1.32865,2.57577 2.97681,3.7648c1.9741,1.42408 4.17079,1.18428 4.5574,1.19512l0,-0.00006z"/>
   <path fill="#191919" id="path3898-1" d="m92.369584,381.75046c-0.83109,-1.35461 -1.22549,-2.41052 -2.56987,-3.91126c-1.65629,-1.84885 -3.22657,-1.5206 -4.31068,-1.53531c0.41619,1.05076 1.11766,2.62267 2.62247,3.98867c1.80235,1.63602 3.87514,1.40388 4.25808,1.4579z"/>
   <path fill="#191919" id="path3900-8" d="m91.298694,385.66329c-1.25037,-1.93039 -1.09258,-2.36728 -2.31638,-3.96786c-1.31435,-1.71899 -2.97444,-1.67175 -4.05387,-1.77341c0.33057,1.08078 0.82459,2.54282 2.22563,4.01496c1.49416,1.56994 3.04831,1.36783 4.14455,1.72631l0.00007,0z"/>
   <path fill="#191919" id="path3902-5" d="m89.245024,389.49749c-0.78826,-1.70787 -0.65215,-2.77436 -1.37495,-3.98494c-1.18218,-1.98 -2.34112,-2.06547 -3.42055,-2.16707c0.86098,2.46685 0.66166,2.47824 1.60946,3.98074c0.92225,1.46204 2.1754,1.6588 3.18604,2.17134l0,-0.00007z"/>
   <path fill="#191919" id="path3904-2" d="m86.764344,392.72169c-0.44922,-1.82662 0.00691,-2.38558 -0.47261,-3.71152c-0.78426,-2.16863 -1.90585,-2.47282 -2.94625,-2.77775c0.11964,1.4558 -0.06099,2.37941 0.75498,3.95735c0.57622,1.11427 1.76908,1.83665 2.66388,2.53192z"/>
   <path fill="#191919" id="path3906-4" d="m81.775884,389.13555c0,0 -0.90097,1.73946 -0.60168,3.75545c0.42401,2.85643 1.95044,3.28438 1.95044,3.28438c0,0 0.86939,-1.29828 0.78101,-3.93261c-0.09438,-2.81387 -2.12979,-3.10728 -2.12979,-3.10728l0.00002,0.00006z"/>
   <path fill="#191919" id="path3908-0" d="m78.522544,392.04526c0,0 -0.90165,1.76115 -0.70435,3.78974c0.25284,2.5997 1.67656,3.25016 1.67656,3.25016c0,0 0.89683,-1.45126 0.93506,-3.64158c0.05832,-3.34457 -1.90727,-3.39825 -1.90727,-3.39825l0,-0.00007z"/>
  </g>
  <path fill="#191919" stroke-width="10" clip-rule="nonzero" id="rect1615-5" d="m65.000001,38.49999c-2.61792,0.00026 -4.99974,2.38208 -5,5l0,54c0.00026,2.61793 2.38208,4.99975 5,5.00001l89.999999,0c2.61792,-0.00026 4.99974,-2.38208 5,-5.00001l0,-54c-0.00026,-2.61792 -2.38208,-4.99974 -5,-5l-3.03125,0l0,27.5625l0,30.5625l-17.84375,0.1875l-17.875,0.1875l-2.28125,1.09375c-2.93474,1.42131 -3.73379,1.57176 -5.46875,1.03125c-0.77781,-0.24232 -2.26683,-0.85722 -3.28125,-1.375l-1.84375,-0.9375l-17.687499,0l-17.6875,0l0,-30.75l0,-27.5625l-3,0z"/>
  <path fill="#191919" fill-rule="nonzero" stroke-width="10" clip-rule="nonzero" id="rect1617-9" d="m115.525,97.49999l-2.075,1.14035c-2.74518,1.49498 -3.46998,1.60757 -5.175,0.87719c-0.77782,-0.33318 -1.9119,-0.92561 -2.5,-1.31579c-0.70967,-0.47085 -1.38056,-0.61926 -5.775,-0.67251l0,5.29241a4.0004,4.67883 0 0 0 4,4.67836l12,0a4.0004,4.67883 0 0 0 4,-4.67836l0,-5.32165l-4.475,0z"/>
  <path fill="#191919" fill-rule="nonzero" stroke-width="4" clip-rule="nonzero" id="path1621-6" d="m65.000001,32.49962l0,67.21912l37.468749,0c0.28977,0.16966 1.02304,0.63127 2.34375,1.25001c1.55013,0.72622 3.37019,1.53125 5.1875,1.53125c1.81731,0 3.63737,-0.80503 5.1875,-1.53125c1.32071,-0.61874 2.05398,-1.08035 2.34375,-1.25001l37.46875,0l0,-67.21912l-13.5,0l-24.78125,0l-0.375,0.25c0,0 -1.07849,0.69658 -2.46875,1.406c-1.34676,0.68722 -2.99242,1.27552 -3.75,1.313c-0.00563,0.00027 -0.02573,-0.00022 -0.03125,0c-0.04164,-0.00174 -0.08336,-0.00174 -0.125,0c-0.01062,-0.00018 -0.05145,0.00043 -0.0625,0c-0.74898,-0.02917 -2.42449,-0.62068 -3.78125,-1.313c-1.39026,-0.70942 -2.46875,-1.406 -2.46875,-1.406l-0.375,-0.25l-27.312499,0l-10.96875,0zm4,4l6.96875,0l26.468749,0c0.30463,0.19488 1.01004,0.64788 2.3125,1.3125c1.12719,0.57518 1.92008,1.11166 3.25,1.40625l0,37.78162c-0.01121,0.79247 1.20745,1.52136 2,1.52136c0.79255,0 2.01121,-0.72889 2,-1.52136l0,-37.78162c1.32992,-0.29459 2.12281,-0.83107 3.25,-1.40625c1.30246,-0.66462 2.00787,-1.11762 2.3125,-1.3125l23.9375,0l9.5,0l0,60.21912l-34.25,0l-0.34375,0.21875c0,0 -1.10032,0.65676 -2.5,1.3125c-1.39968,0.65574 -3.17228,1.25 -3.90625,1.25c-0.73397,0 -2.50657,-0.59426 -3.90625,-1.25c-1.39968,-0.65574 -2.5,-1.3125 -2.5,-1.3125l-0.34375,-0.21875l-34.249999,0l0,-60.21912z"/>
  <g font-size="18.713449px" font-style="normal" font-weight="normal" fill="#222222" font-family="Sans" id="text1514-5">
   <path fill="#191919" id="path3578-8" d="m88.77419,52.499798c-4.66667,0 -9.4386,3.43859 -9.4386,8.8421c0,3.01755 2.03509,5.7193 5.50877,7.4386c3.4386,1.7193 6.52632,2.66667 6.52632,4.77193c0,2.70175 -2.73684,2.8421 -4.17544,2.8421c-3.22807,0 -7.08772,-3.26315 -7.08772,-3.26315l-3.29824,5.54386c0,0 4.10526,3.82456 10.87719,3.82456c5.64912,0 10.91228,-2.42105 10.91228,-9.33334c0,-3.78947 -3.54386,-6.52631 -6.77193,-7.89473c-3.29825,-1.40351 -6.03509,-2.56141 -6.03509,-4.17544c0,-1.57895 1.19298,-2.59649 3.4386,-2.59649c2.98245,0 5.85965,2 5.85965,2l2.66666,-5.26316c0,0 -3.71929,-2.73684 -8.98245,-2.73684z"/>
  </g>
  <g font-size="19.39394px" font-style="normal" font-weight="normal" fill="#222222" font-family="Sans" id="text1518-4">
   <path fill="#191919" id="path3581-2" d="m140.47341,52.499806l-17.16363,0l0,30l17.16363,0l0,-6l-10.32727,0l0,-6.03637l9.89091,0l0,-6l-9.89091,0l0,-5.96363l10.32727,0l0,-6z"/>
  </g>
 </g>
</svg>
! 脚本
1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;

2、各版本的启动脚本及配置文件名不再重合;

3、每次运行可安装一种版本;

4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);

5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);

! 配置

服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成);

密码:自己设定(如不设定,默认为 teddysun.com);

加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb);

协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版);

混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版);

备注: 脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可

! 服务器安装方法

使用root用户登录,运行以下命令:

```
[root@localhost ~]# wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh

[root@localhost ~]# chmod +x shadowsocks-all.sh


[root@localhost ~]# ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
```
([[此脚本|https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh]]基于秋水之脚本,如果失效请[[告知|Coze]],逗比脚本请索取)

!! 安装完成后,脚本提示如下


```
Congratulations, your_shadowsocks_version install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)
 ss://your_encryption_method:your_password@your_server_ip:your_server_port
Your QR Code has been saved as a PNG file path:
 your_path.png

Welcome to visit:https://teddysun.com/486.html
Enjoy it!
```
! 卸载方法

若已安装多个版本,则卸载时也需多次运行(每次卸载一种),使用root用户登录,运行以下命令:


```
./shadowsocks-all.sh uninstall
```

! 启动脚本

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:

```
/etc/init.d/shadowsocks-python start | stop | restart | status
```
Shadowsocks-libev 版:

```
/etc/init.d/shadowsocks-libev start | stop | restart | status
```


! 各版本默认配置文件
Shadowsocks-Python 版:
/etc/shadowsocks-python/config.json

ShadowsocksR 版:
/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:
/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:
/etc/shadowsocks-libev/config.json
\define slider(label)
<$button popup="$:/state/$label$" class="btn-invisible tw-slider"><$reveal type="match" text="" default="" state="$:/state/$label$">&#x229E;</$reveal><$reveal type="nomatch" text="" default="" state="$:/state/$label$">&#x229F;</$reveal> {{$label$||unwikified}}</$button>
<$reveal type="nomatch" text="" default="" state="$:/state/$label$" animate="yes">
<br>
<$transclude/>
</$reveal>
\end

<$macrocall $name="slider" label={{!!title}}/>
\define _nextItem(parent)
     <!-- 
     _nextItem sets a filed `current-item` to the next tiddler
     in a list of tiddlers tagged with parent. 
     parent is a tag name
     -->
    <$set
    tiddler=<<currentTiddler>>
    field="current-item"
    name=currentIndex
    emptyValue={{{[tag[$parent$]first[]]}}}
    >
    <$set
    filter={{{[tag[$parent$]after{!!current-item}]}}}
    name=newIndex
    emptyValue=<<currentIndex>>
    >
      <$action-setfield
      $tiddler={{!!title}}
      current-item=<<newIndex>>
      />
    </$set>
    </$set>
\end

\define _previousItem(parent)
    <!-- _previousItem sets a filed `current-item` to the next tiddler
     in a list of tiddlers tagged with parent. 
	 parent is a tag name
     -->
    <$set
    filter={{{[tag[$parent$]before{!!current-item}]}}}
    name=newIndex
    emptyValue={{{[tag[$parent$]first[]]}}}
    >
      <$action-setfield
      $tiddler={{!!title}}
      current-item=<<newIndex>>
      />
    </$set>
\end

\define _show-and-replace(TagName:"")
    <!-- 
      _show-and-replace shows all tiddlers tagged with TagName
      one by one and replace the current item with the
      next or previous one.
      in a list of tiddlers tagged with parent. 
      parent is a tag name
      -->
<$list filter='[tag[$TagName$]allbefore:include{!!current-item}!limit[1]]' variable="myTid">
<$transclude tiddler=<<myTid>> mode="block"/>
</$list>

<div style="padding-top:10px;padding-bottom:10px;">	 
<$button actions=<<_previousItem $TagName$>>>
{{$:/core/images/left-arrow}} 
</$button>
<$button actions=<<_nextItem $TagName$>> >
{{$:/core/images/right-arrow}} 
</$button>
</div>


\end


\define _show-and-keep(TagName:"")
    <!-- 
     _show-and-keep shows all tiddlers tagged with TagName
     one by one and keep the previous ones while shows the
     next one or remove the last one.
     -->
<$list filter='[tag[$TagName$]allbefore:include{!!current-item}]' variable="myTid">
<$transclude tiddler=<<myTid>> mode="block"/>
</$list>

<div style="padding-top:10px;padding-bottom:10px;">	 
<$button actions=<<_previousItem $TagName$>>>
{{$:/core/images/up-arrow}} 
</$button>
<$button actions=<<_nextItem $TagName$>> >
{{$:/core/images/down-arrow}} 
</$button>
</div>

\end


\define steps(tagName, mode:"replace")
 <$reveal type="match" text=$mode$ default="replace")>
    <<_show-and-replace $tagName$>>
 </$reveal>
 <$reveal type="match" text=$mode$ default="keep")>
    <<_show-and-keep $tagName$>>
 </$reveal>
\end


! Description
This tiddler contains the macros and explain the ''steps'' mechanism
The `steps` itself contains below macro

* `_nextItem`: to get the next item in the list
* `_previousItem`: to get the previous item in the list
* `_show-and-replace`: show left-right arrows and steps in the list of tiddlers, show one at a time
* `_show-and-keep`: show down-up arrows and steps in the list of tiddlers while keep those are displayed before
* `steps`: the main macro, it has two mode
** `replace`: to steps in list of tiddlers show one at a time and replace the current one with previous/next item
** `keep`: to steps in the list of tiddlers show the next/previous item while other items are displayed at the same time

The `steps` macro can be called from any tiddler using the below syntax `<<steps "myTag">>` or `<<steps "myTag" "keep">>`. This macro creates and uses an filed in the target tiddler named `current-item`.

@@background-color:black;color:white;width:70%;padding:10px;
''Important Note'': The macros with underscore (_) in their name are private macro and should not called outside this tiddler. Only ''steps'' is allowed to be called.
@@

!! Troubleshooting
* Multiple call to `steps` in the same macro is ''not recommended'' as it shares the same filed `current-item` and this causes confusion
* At first use, it does not show anything, click the previous button to start displaying items
* If the `steps` does not show anything check the tagName you provided. make sure there are tiddlers tagged with provided tagName
新增[[Steps Macro]]宏。

''源地址'':http://revealgradually.tiddlyspot.com/

''使用方法'':[[Steps Macro]]


```
<<steps TagName:"MyTag" mode:"keep/replace">>
```

''~TagName'' : 

the name used to tag tiddlers (sub tiddlers)

''mode:''

replace (default value), display the next/previous item, one item at a time

keep, display next item or remove last item while other displayed ones are kept on the screen

''示例:''

To show a list of images tagged with png as a gallery use steps as below:


```
<<steps "Temp">>
```


To gradually reveal those images tagged with png do as below


```
<<steps "Temp" "keep">>
```


For tagName without space in their name you can omit the double qoute, i.e:


```
<<steps Temp keep>>
```

''Change the display order''

The steps macro uses the list field to show sub tiddlers in sequence. You can simply modify the list filed of tag tiddler to change the order of tiddlers displayed by steps macro. For more information see: [[ListField|https://tiddlywiki.com/#ListField]]

2018年07月08日周日下午02:47:57
<<<
''重在道而不再术!''
<<<

<$list filter="[field:topic[系统更新]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray;   <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>




"""
<<fa fa-file-word-o>> [[读书日志|Reading Logs]]
<<fa fa-book>> [[书籍管理|Library]]
<<fa fa-leaf>> [[工具其它|Others]]
<<fa fa-tags>> [[标签云集|TagCloud]]
<<fa fa-info-circle>> [[帮助说明|About]]
<style>
.cloud { margin-right: 9px; }
.cloud { LINE-HEIGHT: 22pt; }
.cloud .tc-tag-list-item { margin-right:0; }
</style>
<$list filter="[tags[]!is[system]sort[title]]">
<span class="cloud">
<$transclude tiddler="$:/core/ui/TagTemplate"/>
<$count filter="[all[current]tagging[]]"/>
</span>
</$list>
! Due 

<$list filter="[has[due]!tag[Done]sort[due]sort[created]]">

<$checkbox tag="Done">
<$link to={{!!title}}><$view field="title"/> | <$view field="due"/></$link>
</$checkbox>
</$list>



! Outstanding tasks

<$list filter="[!has[draft.of]tag[Task]!tag[Done]!sort[created]]">

<$checkbox tag="Done"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox>

</$list>

! Completed tasks

<$list filter="[!has[draft.of]tag[Task]tag[Done]!sort[created]]">

<$checkbox tag="Done"> ~~<$link to={{!!title}}><$view field="title"/></$link>~~</$checkbox>

</$list>



<$button message="tm-close-tiddler">Close Me!</$button>
<ul>
  <$list filter="[tag[Temp]!<currentTiddler>!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>
     <$list filter="[<currentTiddler>days[-7]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-8]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-31]]"> @@color:gray;^^近期^^@@</$list>
<$list filter="[<currentTiddler>days[-730]!days[-365]]"> @@color:gray;^^去年^^@@</$list>
</li>
  </$list>
</ul>


<$list filter="[tag[Thinking]]+[!sort[created]limit[50]]"> 
 
<$link><$view field="title"/></$link> @@color:gray;  <$view field="description"/> - <$view field="relation"/>@@ 
<$list filter="[<currentTiddler>days[-7]]">@@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-50]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
{{||$:/core/ui/ViewTemplate/tags}} 

<$transclude/>   
以下是[[Hurricane Capital|https://hurricanecapital.wordpress.com/]] 所总结的查理·芒格 <<footnote "注" "美国投资家,沃伦·巴菲特的黄金搭档。波克夏·哈萨威公司的副董事长,董事长由沃伦·巴菲特担任。">> 的思维模型。


<<<
芒格在多次的演讲中谈及“基础的处世智慧”的概念。芒格的处世智慧包括了一系列的思维模型,每个模型之间相互联系,彷如悬挂在格栅的每个交点上,用以解决关键的商业问题。芒格曾言,大约八十至九十个这样的模型就足以解决90%的问题,让你成为一个够智慧的人。
<<<

!! 思维模型:定律或效应

<<textSliderNoButton "''[[决策过程|Decision theory]]''" "* 五W问题(Asking the Who, What, When, Where, and Why Questions)
* 反置 (Invert)
* 正确与非共识
* [[黑天鹅|黑天鹅]]
** 高斯分布(正态分布、钟形曲线)
** 大数定律
" >>

<<textSliderNoButton "''会计''" "
* [[基本会计等式 (又名 资产负债表等式,Balance Sheet Equation)|https://en.wikipedia.org/wiki/Accounting_equation]]
* [[一般公认会计原则 (GAAP)|http://www.accounting.com/resources/gaap/]]
*[[会计 (GAAP) 盈余|http://www.investopedia.com/terms/a/accountingearnings.asp]]
*[[经济利润 (Economic Earnings)|http://www.nasdaq.com/investing/glossary/e/economic-earnings]]
*[[净现金流 (Free Cash Flow)|http://www.valuewalk.com/wp-content/uploads/2015/11/042.Owner-Earnings-vs-Free-Cash-Flow.pdf]]
*[[贬值 (Depreciation)|http://www.accountingcoach.com/blog/what-is-depreciation]]
*[[维修资本支出 (Maintenance Capital Expenditures)|http://csinvesting.org/wp-content/uploads/2012/12/A-Thorough-Discussion-of-MCX_Case-Study-and-Capital-Theory.pdf]]
*[[成长资本支出 (Growth Capital Expenditures)|http://www.valuewalk.com/wp-content/uploads/2015/11/042.Owner-Earnings-vs-Free-Cash-Flow.pdf]]
*[[沉没成本 (Sunk Cost)|http://www.businessdictionary.com/definition/sunk-cost.html]]
" >>

<<textSliderNoButton "''生物学''" "*自然选择
*差异化生存 (Survival by Differentiation)
*遗传学 (Genetics)
*生理学(Physiology)">>

<<textSliderNoButton "''商业''" "*格雷欣法则 (Gresham’s Law, 劣币逐良币)
*内在价值 (Intrinsic Value)
*经营杠杆 (Operating Leverage)
*机会成本 (Opportunity Cost)
*五力分析 (Five Forces)
*品牌 (Brand)" >>

<<textSliderNoButton "''化学''" "*自催化反应 (Autocatalytic reactions)
*玻尔模型 (Bohr Model)
*反应动力学 (Kinetics)
*热力学 (Thermodynamics)
*测不准原理 (Uncertainty Principle)
*黏度 (Viscosity)" >>


<<textSliderNoButton "''经济学''" "*代理人问题 (Agent Problem)
*信息不对称 (Asymmetric Information)
*行为经济学 (Behavioral Economics)
*比较优势 (Comparative Advantage)
*创造性破坏 (Creative Destruction)
*累计优势 (Cumulative Advantage)
*效用递减 (Diminishing Utility)
*规模经济 (Economies of Scale)
*范围经济 (Economies of Scope)
*[[经济护城河 (Economic Moat) |https://hurricanecapital.wordpress.com/2014/05/14/mental-model-economic-moat/]]-可持续竞争优势 (Sustainable Competitive Advantage)
*弹性 (Elasticity)
*外部性 (Externalities)
*激励 (Incentives)
*收入效应和替代效应 (Income and Substitution Effects)
*市场 (Markets)
*边际成本 (Marginal Costs)
*边际效用 (Marginal Utility)
*垄断 (Monopoly)
*网络效应 (Network Effect)
*寡头垄断 (Oligopoly)
*机会成本 (Opportunity Cost)
*价格歧视 (Price Discrimination)
*囚徒困境 (Prisoner’s Dilemma)
*公私物品 (Public and Private Goods)
*稀缺性 (Scarcity)
*专门化 (Specialization)
*供给与需求 (Supply and Demand)
*[[转换成本 (Switching Costs)|https://hurricanecapital.wordpress.com/2015/10/25/checklist-questions-switching-costs/]]
*[[货币的时间价值 (Time Value of Money)|https://www.khanacademy.org/economics-finance-domain/core-finance/interest-tutorial/present-value/v/time-value-of-money]]
*权衡取舍 (Tradeoffs)
*公地悲剧 (Tragedy of the Commons)
*交易成本 (Transactions Costs)
*效用 (Utility)">>

<<textSliderNoButton "''工程学''" "*抽象化 (Abstraction)
*算法 (Algorithms)
*条件语句 (If-statements)
*递归 (Recursion)
*[[安全边际 (Margin of Safety) |https://hurricanecapital.wordpress.com/2014/05/12/mental-model-margin-of-safety/]]/ 备用系统 (Backup System)
*断点 (Breakpoints)">>

<<textSliderNoButton "''法律系统''" "*举证责任 (Burden of Proof)
*判例法 (Common law)
*正当程序 (Due Process)
*谨慎责任 (Duty of care)
*诚信 (Good Faith)
*过失 (Negligence)
*无罪推定 (Presumption of Innocence)
*合理怀疑 (Reasonable doubt)">>

<<textSliderNoButton "''[[管理科学|管理科学模型]]''" "
*[[奥卡姆剃刀 (Occam’s razor)|简单,简单,再简单]] ([[参考|http://www.safalniveshak.com/latticework-mental-models-occams-razor/]])
*[[帕金森定律 (Parkinson’s Law)|https://www.farnamstreetblog.com/2013/12/parkinsons-law/]]
*[[过程与结果 (Process versus Outcome)|https://www.washingtonpost.com/business/barry-ritholtz-outcome-or-process--what-investment-focus-succeeds-over-time/2014/02/21/66e5b4c4-98cb-11e3-b931-0204122c514b_story.html]]">>

<<textSliderNoButton "''数学''" "
*[[复利(Compound Interest)|https://hurricanecapital.wordpress.com/2014/05/08/mental-model-compound-interest/]]
*决策树 (Decision Trees)
*大数定律 (Law of Large Numbers)
*概率论 (Probability Theory)">>

<<textSliderNoButton "''[[哲学|哲学模型]]''" "*溯因 (Abduction)
*隐喻 (Metaphors)
*实用主义 (Pragmatism)
*现实主义 (Realism)
*[[还原论|尼采的锤子]] (Reductionism)
*明喻 (Similes)">>

<<textSliderNoButton "''物理学''" "*代理人基模型 (Agent Based Models)
*贝叶斯定理 (Bayes Theorem)
*中心极限定理 (Central Limit Theorem)
*组合 (Combinations)
*复杂适应系统 (Complex Adaptive Systems)
*化合 (Compounding)
*相关性与因果关系 (Correlation versus Causation)
*临界质量 (Critical Mass)
*[[决策树模型|Decision Tree]] (Decision Trees)
*电磁学 (Electromagnetism)
*平衡 (Equilibrium)
*惯性 (Inertia)
*逆相 (Inversion)
*凯利优选模式 (Kelly Optimization Model)
*大数定律 (Law of Large Numbers)
*均值、中值、众数 (Mean, Median, Mode)
*动量 (Momentum)
*牛顿运动定律 (Newton’s Laws)
*正态分布 (Normal Distribution)
*排列 (Permutations)
*幂定律 (Power Law)
*量子力学 (Quantum Mechanics)
*回归分析 (Regression Analysis)
*均值回归 (Return to the Mean)
*相对性 (Relativity)
*香农定理 (Shannon’s Law)
*热力学 (Thermodynamics)
*定标 (Scaling)
*灵敏度分析 (Sensitivity Analysis)">>

<<textSliderNoButton "''[[心理学|心理学模型]]''" "*行动偏差 (Action Bias)
*行动者-观察者偏差 (Actor-Observer Bias)
*逆向选择 (Adverse Selection)
*情绪启发 (Affect Heuristic)
*阿克洛夫的柠檬 (Akerlof’s Lemons)
*选择性失明 (Alternative Blindness)
*可选路径 (Alternative Paths)
*模糊厌恶 (Ambiguity Aversion)
*[[定锚偏见 (Anchoring Bias)|https://hurricanecapital.wordpress.com/2014/05/04/mental-model-anchoring-bias/]]
*主观一致 (Arbitrary Coherence)
*联想偏差 (Association Bias)
*注意偏差 (Attentional Bias)
*吸引效应 (Attraction Effect)
*归因理论 (Attribution Theory) (aka Cause Theory)
*权威-错误影响倾向 (Authority-Misinfluence Tendency)
*自动化偏见 (Automation Bias)
*自动催化作用 (Auto Catalysis) (aka Evergreen or Self-Breeding)
*[[可得性偏差 (Availability Bias)|https://hurricanecapital.wordpress.com/2015/09/07/mental-model-availability-bias/]]
*错误衡量易得性倾向 (Availability-Misweighing Tendency)
*贝比鲁斯效应 (Babe Ruth Effect)
*逆火效应 (Backfire Effect)
*从众效应 (Bandwagon Effect)
*巴纳姆效应 (Barnum Effect)
*基本比率忽视 (Base-Rate Neglect)
*摇摆效应 (Beaty Effect)
*“因为”正当 (‘Because’ Justification)
*狗屎运 (Beginner’s Luck)
*信念偏差 (Belief Bias)
*本福德定律 (Benford’s Law)
*偏见盲点 (Bias Blind Spot)
*稳操胜券谬误 (Bird in the Hand Fallacy)
*怪异效应 (Bizarreness Effect)
*旁观者效应 (Bystander Effect)
*改变偏差 (Change Bias)
*司机的知识 (Chauffeur Knowledge)
*啦啦队效应 (Cheerleader Effect)
*童年失忆症 (Childhood Amnesia)
*支持选择偏差 (Choice-Supportive Bias)
*延迟选择 (Choice Deferral) (Procrastination)
*偏颇选择 (Cherry-picking)
*选择过载 (Choice Overload)
*聪明汉斯效应 (Clever Hans Effect)
*聚类错觉 (Clustering Illusion)
*鸡尾酒会效应 (Cocktail Party Effect)
*认知损耗 (Cognitive Depletion)
*认知失调 (Cognitive Dissonance)
*巧合 (Coincidence)
*承诺偏差 (Commitment Bias)
*复利 (Compound Interest)
*复杂适应系统 (Complex Adaptive Systems)
*确认偏差 (Confirmation Bias)
*合取谬误 (Conjunction Fallacy)
*相合性偏差 (Congruence Bias)
*合取谬误 (Conjunction Fallacy)
*保守倾向 (Conservatism) (Bayesian)
*保守倾向 (Conservatism) / 退缩偏差 (Regressive Bias)
*一致性偏差 (Consistency Bias)
*触染偏差 (Contagion Bias)
*语境效应 (Context Effect)
*对比错误反应倾向 (Contrast-Miscreation Tendency)
*对话偏差 (Conversational Bias)
*跨种族效应 (Cross-Race Effect)
*潜抑记忆 (Cryptomnesia)
*累积优势 (Cumulative Advantage) / 马太效应 The Matthew Effect) / 富人愈富 The Rich Get Richer
*好奇心倾向 (Curiosity Tendency)
*知识之祸 (Curse of Knowledge)
*数据挖掘错误 (Data Mining Error)
*资料窥视偏差 (Data Snooping Bias)
*决策疲劳 (Decision Fatigue)
*诱饵效应 (Decoy Effect)
*默认效应 (Default Effect)
*防御性归因假设 (Defensive Attribution Hypothesis)
*防御性决策 (Defensive Decision Making)
*职业病 (Déformation Professionnelle)
*宗派效应 (Denomination Effect)
*被剥夺超级反应倾向 (Deprival Superreaction Tendency)
*灾难短视 (Disaster Myopia)
*失望厌恶 (Disappointment Aversion)
*讨厌/憎恨倾向 (Dislike/Hating Tendency)
*错位效应 (Disposition Effect)
*领地依赖 (Domain Dependence)
*避免怀疑倾向 (Doubt-Avoidance Tendency)
*害怕风险 (Dread Risk)
*化学物质错误影响倾向 (Drug-Misinfluence Tendency)
*达克效应 (Dunning-Kruger Effect)
*时长忽视 (Duration Neglect)
*反身性 (Economic Reflexivity)
*伊斯特林悖论 (Easterlin Paradox)
*心血辩护 (Effort Justification)
*自我损耗 (Ego Depletion)
*自利偏差 (Egocentric Bias)
*同理心效应 (Empathy Gap)
*皇帝新衣综合征 (Eperor’s New Clothes Syndrome)
*禀赋效应 (Endowment Effect)
*艳羡/妒忌倾向 (Envy/Jealousy Tendency)
*艳羡 (Envy)
*承诺升级 (Escalation of Commitment)
*本质主义 (Essentialism)
*可评估性偏差 (Evaluability Bias)
*期望过大 (Exaggerated Expectation)
*自视过高的倾向 (Excessive Self-Regard Tendency)
*预期 (Expectations)
*预期偏差 (Experimenter’s or Expectation Bias)
*指数增长 (Exponential Growth)
*外部刺激偏差 (Extrinsic Incentives Bias)
*阴影效应偏差 (Fading Affect Bias)
*合成谬误 (Fallacy of Composition)
*频率谬误 (Fallacy of Frequency)
*单因谬误 (Fallacy of the Single Cause)
*错误因果关系 (False Causality)
*错误共识效应 (False-Consensus Effect)
*虚假记忆 (False Memory)
*歪曲历史 (Falsification of History)
*熟悉性假设 (Familiarity Heuristic)
*遗憾恐惧 (Fear of Regret)
*功能积极效应 (Feature-Positive Effect)
*流畅性假设 (Fluency Heuristic)
*聚焦效应 (Focusing Effect)
*预测错觉 (Forecast Illusion)
*福勒效应 (Forer Effect) / 巴纳姆效应 (Barnum Effect)
*框架效应 (Framing Effect)
*频率错觉 (Frequency Illusion)
*功能固着 (Functional Fixedness)
*基本归因错误 (Fundamental Attribution Error)
*赌徒谬误 (Gambler’s Fallacy)
*伽拉忒亚效应 (Galatea Effect)
*注视假设 (Gaze Heuristic)
*生成效应 (Generation Effect) / 自我生成效应 (Self-Generation Effect)
*搜索引擎效应 (Google Effect)
*群体迷思 (Groupthink)
*群体归因错误 (Group Attribution Error)
*群体极化 (Group Polarization)
*光环效应 (Halo Effect)
*累赘原理 (Handicap Principle)
*难易效应 (Hard-Easy Effect)
*霍索恩效应 (Hawthorne Effect)
*享乐适应症 (Hedonic Treadmill)
*羊群效应 (Herding)
*后见之明偏差 (Hindsight Bias)
*本土偏好 (Home Bias)
*敌对媒体效应 (Hostile Media Effect)
*热手谬误 (Hot-Hand Fallacy)
*房款效应 (House-Money Effect)
*幽默效应 (Humor Effect)
*双曲贴现 (Hyperbolic Discounting)
*意念动作效应 (Ideomotor Effect)
*受害者标签效应 (Identifiable Victim Effect)
*宜家效应 (IKEA Effect)
*被关注错觉 (Illusion of Attention)
*不对称洞察力错觉 (Illusion of Asymetric Insight)
*控制错觉 (Illusion of Control)
*外部因素错觉 (Illusion of External Agency)
*技能错觉 (Illusion of Skill)
*透明度错觉 (Illusion of Transparency)
*真相错觉效应 (Illusion of Truth Effect)
*有效性错觉 (Illusion of Validity)
*相关性错觉 (Illusionary Correlation)
*虚假相关 (Illusory Correlation)
*虚假模式识别 (Illusory Pattern Recognition)
*虚假优越感 (Illusory Superiority)
*无力关门 (Inability to Close Doors)
*动机引起的偏差 (Incentive-Caused Bias)
*应激超级反应倾向 (Incentive Super-Response Tendency)
*避免不一致性倾向 (Inconsistency-Avoidance Tendency)
*心灵感应 (Induction)
*受简单联想影响的倾向 (Influence-from-Mere Association Tendency)
*信息偏差 (Information Bias)
*信息过载 (Informational Overload)
*圈内人偏差 (In-Group Bias)
*群体内外偏差 (In-Group Out-Group Bias)
*样本大小不敏感 (Insensitivity to Sample Size)
*即时历史偏差 (Instant History Bias)
*意向处理错误 (Intention-To-Treat Error)
*网络过滤泡沫 (Internet Filter Bubble)
*内省错觉 (Introspection Illusion)
*倒错 (Inversion)
*非理性恶化 (Irrational Escalation)
*元月效应 (January Effect)
*杰文斯悖论 (Jevons Paradox)
*公平世界假设 (Just-World Hypothesis)
*康德式公平倾向 (Kantian Fairness Tendency)
*滞后效应 (Lag Effect)
*沃贝贡湖效应 (Lake Wobegon Effect) (see Overconfidence)
*大数定律 (Law of Large Numbers)
*规模报酬 (Law of Scale)
*小数定律 (Law of Small Numbers)
*少即是多效应 (Less-is-Better Effect)
*瞄准与锐化效应 (Leveling and Sharpening Effect)
*喜欢/热爱倾向 (Liking/Loving Tendency)
*喜爱偏差 (Liking Bias)
*限价订单效应 (Limit Order Effect)
*琳达问题 (Linda Problem) (see Conjunction Fallacy)
*列表过长效应 (List-Length Effect)
*风险极大—极小赌注偏差 (Longshot-Favorite Bias)
*合奏效应 (Lollapalooza Tendency)
*厌恶损失 (Loss Aversion)
*低波动性异常 (Low Volatility Anomaly)
*用锤子的人综合征 (Man With A Hammer Syndrome)
*心理账户 (Mental Accounting)
*单因接触效应 (Mere Exposure Effect)
*不用心 (Mindlessness)
*明斯基时刻 (Minsky Moment)
*误导信息效应 (Misinformation Effect)
*通道效应 (Modality Effect)
*货币幻觉 (Money Illusion)
*蒙提霍尔问题 (Monty Hall Problem)
*心境一致性记忆偏差 (Mood-Congruent Memory Bias)
*动机拥挤 (Motivation Crowding)
*道德风险 (Moral Hazard)
*道德许可 (Moral Licensing)
*道德运气 (Moral Luck)
*动机挤出效应 (Motivation Crowding Out Effect) (see Undermining Effect)
*损失厌恶短视 (Myopic Loss Aversion)
*犬儒主义天真 (Naive Cynicism)
*多元化天真 (Naive Diversification)
*现实主义天真 (Naive Realism)
*消极性偏差 (Negativity Bias)
*消极性效应 (Negativity Effect)
*轻忽机率偏误 (Neglect of Probability)
*网络效应 (Network Effect)
*接班人效应 (Next-in-Line Effect)
*噪声交易 (Noise Trading)
*常态偏差 (Normalcy Bias)
*非自主发明综合症 (Not-Invented-Here Syndrome)
*狂躁症 (Neomania)
*新闻错觉 (News Illusion)
*观察员偏差 (Observer Bias)
*观察者期望效应 (Observer-Expectancy Effect)
*[[奥卡姆剃刀|简单,简单,再简单]] (Occam’s Razor)
*不作为偏差 (Omission Bias)
*后果偏差 (Outcome Bias)
*外团体同质性效应 (Outgroup Homogeneity Bias)
*过度自信偏差 (Overconfidence Bias)
*过度乐观倾向 (Overoptimism Tendency)
*过度考虑 (Overthinking)
*帕金森定律 (Parkinson’s Law)
*空想性错视 (Pareidolia)
*帕雷托法则 (Pareto Principle) (The 80/20 Rule)
*部分暗示效应 (Part-List Cueing Effect)
*交接权杖 (Pass the Baton) (We All Have To Die)
*巴甫洛夫联想 (Pavlovian Association)
*峰终定律 (Peak-End Rule)
*持久性 (Persistence)
*人格化 (Personification)
*说服力偏差 (Persuasion Bias)
*悲观主义偏差 (Pessimism Bias)
*图优效应 (Picture Superiority Effect)
*安慰剂效应 (Placebo Effect)
*规划谬误 (Planning Fallacy)
*多数无知 (Pluralistic Ignorance)
*购后合理化 (Post-Purchase Rationalization)
*启动效应 (Priming Effect)
*首因和近因效应 (Primacy and Recency Effects)
*拖延行为 (Procrastination)
*亲创新偏差 (Pro-Innovation Bias)
*投影偏差 (Projection Bias)
*假确定性效应 (Pseudocertainty Effect)
*皮格马利翁效应 (Pygmalion Effect)
*逆反心理 (Reactance)
*反应式贬低 (Reactive Devaluation)
*重视理由倾向 (Reason-Respecting Tendency)
*近因偏差 (Recency Bias)
*回馈倾向 (Reciprocation Tendency)
*启发式再认 (Recognition Heuristic)
*反射效应 (Reflection Effect)
*后悔 (Regret)
*代表性启发 (Representative Heuristic)
*资源枯竭 (Resource Depletion)
*管束偏差 (Restraint Bias)
*奖惩超级反应倾向 (Reward and Punishment Superresponse Tendency)
*趋均数回归 (Regression to Mean)
*代表性启发 (Representativeness Heuristic)
*莫名其妙效应 (Rhyme as Reason Effect)
*风险规避 (Risk Aversion)
*风险补偿 (Risk Compensation) (Peltzman Effect)
*风险偏移 (Risky Shift)
*整数效应 (Round Number Effect)
*帆船效应 (Sailing-Ship Effect)
*突显效应 (Salience Effect)
*满意法 (Satisficing)
*泡泡纱错觉 (Seersucker Illusion)
*稀缺性错误 (Scarcity Error)
*二级思考 (Second-Level Thinking)
*选择性偏差 (Selection Bias)
*选择性认知 (Selective Perception)
*自我控制 (Self-Control)
*自我增强传染偏差 (Self-Enhancing Transmission Bias)
*利己主义 (Self-Interest)
*自选择偏差 (Self-Selection Bias)
*自利偏差 (Self-Serving Bias)
*自利型归因偏差 (Self-Serving Attribution Bias) (see Self-Serving Bias)
*塞梅尔维斯效应 (Semmelweis Effect)
*衰老—错误影响倾向 (Senescene-Misinfluence Tendency)
*共享信息偏差 (Shared Information Bias)
*神枪手效应 (Sharpshooter Effect)
*相似性启发 (Similarity Heuristic)
*简单逻辑 (Simple Logic)
*简单,避免痛苦心理否认 (Simple, Pain-Avoiding Psychological Denial)
*模拟式启发 (Simulation Heuristic)
*事后效应 (Sleeper Effect)
*社会地位偏差 (Social Comparison Bias)
*社会期望偏差 (Social Desirability Bias)
*社会性懈怠 (Social Loafing)
*社会智力假设 (Social Intelligence Hypothesis)
*社会认同倾向 (Social-Proof Tendency)
*否认压制 (Squelch by Denial)
*现状偏差 (Status Quo Bias)
*刻板印象 (Stereotyping)
*次可加性效应 (Subadditivity Effect)
*主观验证 (Subjective Validation)
*沉没成本谬误 (Sunk Cost Fallacy)
*超级碗效应 (Superbowl Effect)
*迷信 (Superstition)
*幸存者偏差 (Survivorship Bias)
*情节偏差 (Story Bias)
*战略性误传谎言 (Strategic Misrepresentation)
*压力影响倾向 (Stress-Influence Tendency)
*游泳者的身体错觉 (Swimmer’s Body Illusion)
*系统公正化效应 (System Justification)
*最佳选择启示 (Take-the-Best Heuristic)
*德州神枪手效应 (Texas Sharpshooter Effect) (see Sharpshooter Effect)
*节省时间偏差 (Time-Saving Bias)
*泰坦尼克效应 (Titanic Effect)
*黑天鹅效应 (The Black Swan)
*好转前的恶化谬误 (The It’ll-Get-Worse-Before-It-Gets-Better Fallacy)
*小数定律 (The Law of Small Numbers)
*选择悖论 (The Paradox of Choice)
*平均指数 (The Problem with Averages)
*公地悲剧 (Tragedy of the Commons)
*品性归属偏差 (Trait Ascription Bias)
*土耳其错觉 (Turkey Illusion)
*讲废话的倾向 (Twaddle Tendency)
*基本归因错误 (Ultimate Attribution Error)
*单位偏差 (Unit Bias)
*不用就忘倾向 (Use-It-or-Lose-It Tendency)
*志愿者式愚笨 (Volunteer’s Folly)
*熟悉路线效应 (Well Travelled Road Effect)
*威尔·罗杰斯现象 (Will Rogers Phenomenon)
*赢者诅咒 (Winner’s Curse)
*劣于常人效应 Worse-than-Average Effect
*蔡加尼克效应 (Zeigarnik Effect)
*零风险偏差 (Zero-Risk Bias)
*零和启发 (Zero-Sum Heuristic)">>

<<textSliderNoButton "''统计学''" "*均值 (Mean)
*标准差 (Standard Deviation) / 正态分布 (Normal Distribution)
*趋均数回归 (Regression to the Mean)">>

<<textSliderNoButton "''[[信息技术和互联网]]''" "*梅特卡夫定律(Metcalfe's law)
">>

<<textSliderNoButton "''[[博弈论]](Game Theory)''" "*1
">>

<<textSliderNoButton "''其它''" "
*排列组合理论(Permutation And Combination)(四象限时间法)
*投资组合理论(Portfolio Theory)
*反意识形态
*“避免不一致性倾向”
*巴普洛夫效应 (“花剌子模信使”弱点)
*冰山理论
*对非理性的自我认识理论
">>

返回:[[Thought Framework]] 

<$button message="tm-close-tiddler">Close Me!</$button>

!! 定律或效应相关阅读笔记:
<$list filter="[field:topic[Thinking Models]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@
</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<<<.tc-big-quote
思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。
<<<

* [[思维科学|Thought Framework Management]]
**个人思维
***思维模型
***# 思维学:逻辑思维、形象思维和创造思维
***# [[科学思维模型|Thinking Models]]
***# 思维模型的建立
***##[[信息收集和学习|PKM]]
***##科学分析问题的方法:定律和方法论
***##思考--综合并思维模型初步的建立
***##检验--完整性和逻辑性
***##实践
***##修正和再学习
***思维盲区
**#[[认知错觉|建立自己的思维框架,避免认知错误陷阱]]
**#知识缺陷
***固有思维(非实证性的因素,系统1)
**#成见
**#偏激
**#利我性筛选
**社会思维
**思维的生理机制
***思维规律
***#人工智能
***[[思维系统|思考快与慢]]
***#快思考--- 系统1
***##本能性思考
***##输出:印象、直觉、意向、联想和感觉等
***##无法强行关闭(系统性缺陷)
***#慢思考--- 系统2
***##自我控制能力
***##输出:按照[[思维框架|Thinking Models]]运行
***##身体参与并消耗体能

**[[决策论|Decision theory]]

!! 关于认知科学的阅读书目:

<$details summary="相关书目">

<$list filter="[field:genre[认知哲学]] +[!sort[created]]">

《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》</$list>
</$details>


!!思维模型:

[[Thinking Models]] 

!! 认知科学阅读笔记:

<$list filter="[field:topic[Thought Framework]] [tag[Thought Framework]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@
</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<<<@@background-color:yellow;
思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。@@
<<<

!!思维科学

维框架管理(Thought Framework Management)之于“思维科学”(noetic science),南叶青最早提出来,他把自然、社会和思维三种现象放在同一层面上进行了严格的界定,然后指出,自然、科学和思维的根本区别就在于''“自然现象是不经过人的行为就已经存在的,社会现象是要经过人的行为才能够存在的。思维现象是未经过人的行为,因而未外化成事实的观念作用和观念形态”''。在国外,思维科学也叫
认知科学(cognitive sciences),事实就是AI。

!! 思维科学研究主要内容
1.思维的生理机制。2.个人思维、社会思维;抽象思维,形象思维及灵感思维的具体规律及其关系。3.思维规律的具体应用。思维科学理论体系包括基础科学、技术科学和应用科学3个部分,涉及哲学,逻辑学、心理学、思维生理学、脑科学、人工智能、计算机软件工程等广泛学科和领域。思维科学的研究是研究如智能计算机、人工智能、模式识别等建立理论基础。

总之,''思维科学是关于人脑对信息处理的研究'',从信息处理的角度看,人脑与电脑相结合是非常自然的,它们都是作信息处理的。

!! 思维模型的建立
我们对一件事物的处理指令主要来自于我们大脑对事物的分析判断结果,而这个判断关键性数据又来自于我们对外部数据的采集,换句话说,就是我们看问题的角度,看问题的角度主观、客观或者多重角度,这些输入大脑数据原始数据决定了输出结果最终又多接近事务的本质。所以,建立自我自我思维模型,要从正确的原始数据来源、数据之间的逻辑关系、(还有什么那?待研究)几方面进行综合分析,一旦形成这样的思考方法,就逐渐建立起来了自己独有的思维模式。

不同科学领域有不同的科学实践模型,换句话说是不同的思维模型,一些模型是被验证过的,被称之为原则、法则、定律等。

见:{{Thinking Models||slider}}

!!!看问题的角度:
主观思维、对立面思维、客观思维(第三方思维)和上地视角思维。(还有什么角度吗?)

!!!事物和外界的逻辑关系:
万物和外界的逻辑关系都可以分为:不可改变、可以改变和动态变化。
所以,我们在做出解决办法时候,就要从后两者下手,企图达到改变事务的目的。

!!!思维盲区解决办法
知识量愈大,盲区愈大。对待超出自我认知能力的事务判断力所能及的是做到最大可能接触到事务本质。''假设和穷举''未尝不是一个好办法。假设,准确的说假设是一直思维机制。(人做判断的时候有两种机制:一种是“科学家机制”,先有证据再下结论;一种是“律师机制”,先有了结论再去找证据),世界上科学机制的人很少,每个人都爱看能印证自己已有观念的东西。我们不但不爱看,而且还会直接忽略那些不符合我们已有观念的证据。所以对于未知探究,假设就是一种很好的办法。穷举,则是尽量可能的罗列,然后核对检查。


<<<
''认为凡事都有目的,是普通人思维区别于科学思维的根本之一。''

<<<

待续
<<list-links "[tag[Tips]]">>
<ul>
  <$list filter="[tag[Tools]!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>
        <$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
</li>
  </$list>
</ul>

* [[Tiddlywiki 资源收集|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]]
* 实验性:[[Demo|https://rizi.me/demo.html]]


<$button message="tm-close-tiddler">Close Me!</$button>
新增查看和修改`fields`插件,包含文件:

$:/plugins/.mr/shiraz/pagecontrol/view-fields

$:/plugins/.mr/shiraz/images/view-fields.svg

$:/plugins/.mr/shiraz/viewtemplate/view-fields

主要功能:
点击页面工具栏的{{$:/plugins/.mr/shiraz/pagecontrol/view-fields}}图标,即可快速显示和修改`fields`。


欢迎关注我的微信公众号"''事了拂剑去''":

[img[https://rizi.me/img/Wechat.jpg]] 
<ul>
  <$list filter="[tag[Writing]!sort[modified]]">
    <li>
		<$link><$view field="title"/></$link>
        <$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^近期^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^今年^^@@</$list>
</li>
  </$list>
</ul>


<span title="Read the Word,Read the World."><a href="#Reading Logs"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=100%></a>
</span>


<div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;">
<a href="#Reading Logs" class="tc-btn-big-green" style="background-color:#37112f;" rel="noopener noreferrer">
<<fa  "fa-book">> Reading Journal</a>

<a href="#Others" class="tc-btn-big-green" style="background-color:#5f0031;" rel="noopener noreferrer">
<<fa "fa-spin fa-snowflake-o">> Others & Tools
</a>
<a href="#Library" class="tc-btn-big-green" style="background-color:#91002e;" rel="noopener noreferrer">
<<fa "fa-university">> Library Tracker  
 </a>
<a href="#Thought Framework" class="tc-btn-big-green" style="background-color:#e21231;" rel="noopener noreferrer">
<<fa "fa-free-code-camp">> Thought Framework 
</a>
<a href="http://www.aypwip.org/webnote/coze" class="tc-btn-big-green" style="background-color:#ff3125;" target="_blank" rel="noopener noreferrer">
<<fa "fa-comment-o">> Message Board 
</a> 
</div>
<$list filter="[field:book_title[一个人的书房]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="一个孤独的散步者的梦"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[一个孤独的散步者的梦]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[一个村庄里的中国]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
@@.note
''Keywords:'' {{!!description}}
@@

《世界顶级思维》这是一本挺垃圾的书,前后用时10分钟看完。一开始看到这本书就断定了他是一本垃圾书。一是作者名字是网名;二是书名大言不惭的号称世界顶级,凡此种种迹象基本上可以断定必为伪书。除此之外,还有一些书名包含“不得不”、“必须”、“不可错过”等这种字眼的书也基本上不值得去翻阅。之所以知道这本书垃圾还要翻看的原因,是看看这位伪作者都整理出来了哪些定律和效应 — 因为我一直在研究认知科学以及思维框架的建立。不过十分钟快速翻阅还是有一些小收获。这本书的编辑选择的大部分定律皆为“软定律”,也就是非自然科学方面,如一些心理学家、政治家以及经济学家等的断言。不能说这些话没有道理,是这些不能称为放之四海而皆准的定律,充其量是一些警句或者鸡汤,正如《[[黑天鹅]]》作者所言,软科学无专家,不要把他们的话奉为圭臬。书中有几条“硬法则”还是有点意思,皆为自然科学方面的现象,如:

''刺猬法则''是指人际交往中的“心理距离效应”,人与人之间需要保持适当的距离,只有这样才能最大限度地感受彼此的美好。

''蜂舞法则:''蜜蜂的舞蹈主要有“圆舞”和“镰舞”两种形式。工蜂回来后,常作一种有规律的飞舞。如果工蜂跳圆舞,就是告诉同伴蜜源与蜂房相距不远,约在100米左右。工蜂如果跳镰舞,则是通知同伴蜜源离蜂房较远。路程越远,工蜂跳的圈数越多,频率也越快。如果跳8字型舞,并摇摆其腹部,舞蹈的中轴线跟巢顶的夹角正好表示蜜源方向和太阳方向的夹角。蜜蜂跳舞时头朝上或朝下,与告知蜜源位置之方向有关:跳舞时头向上,表明找寻蜜源位置必须朝着太阳的方向飞行。蜂舞法则揭示的道理是:信息是主动性的源泉,加强沟通才能改善管理的效果。

''马蝇效应:''没有马蝇的叮咬刺激,马就慢慢腾腾地走走停停;而有了马蝇的叮咬刺激,马就跑得飞快。再懒惰的马,只要身上有马蝇叮咬,它也会精神抖擞,飞快奔跑。

''鲶鱼效应:''挪威人爱吃沙丁鱼,沙丁鱼只有在活鱼时才鲜嫩可口,但由于沙丁鱼不爱动,捕上来不久就会死去。一个偶然的机会,一个渔民误将一条鲶鱼掉进了装沙丁鱼的鱼舱,当他回到岸边打开船舱时惊奇地发现,以前都会死的沙丁鱼居然都活蹦乱跳。渔夫马上发现,这是先前掉进去的鲶鱼的功劳。沙丁鱼要想躲过“被吃”的噩运,就必须在鱼槽内拼命不停地游动,最终大部分沙丁鱼都能活着返港。

''毛毛虫效应:''打破常规,破旧立新。
法布尔曾经做过一个著名的实验:他把许多毛毛虫放在一个花盆的边缘上,使其首尾相接围成一圈,在花盆周围不远的地方撒了一些毛毛虫喜欢吃的松叶。毛毛虫开始一个跟着一个绕着花盆的边缘一圈一圈地走,一小时过去了,一天过去了,又一天过去了,这些毛毛虫还是夜以继日地绕着花盆的边缘在转圈。一连走了七天七夜,它们最终因为饥饿和精疲力竭而相继死去。毛毛虫习惯于固守原有的本能、习惯、先例和经验,无法破除尾随习惯而转向去觅食。后来,人们把这种喜欢跟着前面的路线走的习惯称之为“跟随者”的习惯,把因跟随而导致失败的现象称为“毛毛虫效应”。

''羊群效应:''投资理财不是赶时髦 
在一群羊前面横放一根木棍,第一只羊跳了过去,第二只、第三只也会跟着跳过去;这时把那根棍子撤走,后面的羊走到这里,仍然像前面的羊一样向上跳一下,这就是所谓的“羊群效应”,也称“从众心理”。

''托利得定理:''思可相反,得须相成。
测验一个人的智力是否属于上乘,只看脑子里能否同时容纳两种相反的思想而无碍于其处世行事。两种正反思想共存,说明你能够听进不同意见,能把反对意见加以分析,从而对决策起到积极的影响。

''前景理论:''前景与风险是一对双胞胎。
包括三个基本原理:一是大多数人在面临获得时具备风险规避意识;二是大多数人在面临损失时具备风险偏爱倾向;三是人们对损失比对获得更敏感。

2019年05月08日周三下午11:11:27
<$list filter="[field:book_title[一生的读书计划]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
|| ! 书名 | !作者 | | !书名 | !作者  |
|!清代|《雪涛谐史》 |江盈科 | |《觚剩》|钮琇 |
|~|《影梅庵忆语》|冒襄 |  |《香畹楼忆语》 |陈裴之 |
|~|《乾隆游江南》|佚名 |  |《痴婆子传》 |不正居士 |
|~|《古文辞类纂》|姚鼐 |  |《耳食录》 |乐钧 |
|~|《板桥杂记》|余怀 |  |《夜雨秋灯录》 |宣鼎 |
|~|《闲情偶寄》|李渔 |  |《 宋人轶事汇编》 |丁传靖 |
|!明代|《夜航船》|张岱 |  |《智囊全集》 |冯梦龙 |
|~|《西湖寻梦》|~|  |《立斋闲录》 |宋端仪 |
|!元代|  |  |  | | |
|!宋代|《容斋续笔》|洪迈 |  |《容斋四笔》|洪迈|
|~|《容斋三笔》|~|  |《容斋五笔》 |~|
|~|《东坡志林》 |苏轼 |  |《容斋随笔》 |~|
|~|《仇池笔记》|~|  |《困学记闻》|王应麟 |
|~|《老学庵笔记》 |陆游 |  |《北梦琐言》|孙光宪  |
|~|《高僧传》 |天寿寺 |  |《五灯会元》|释普济 |
|~|《对床夜语》 |范晞文 |  || |
|!五代|《唐摭言》 |王定保 |  | | |
|!唐代|《酉阳杂俎》 |段成式 |  |《艺文类聚》|欧阳询  |
|!南北朝|《洛阳伽蓝记》 |杨炫之 |  ||  |


独乐乐不如众乐乐!

以下书籍纯粹出于阅读方便为之,不涉及版权和商业利益。也欢迎大家自行下载、阅读和传播。由于制作者时间和专业设计水平有限,排版难免粗鄙,敬请包涵!也欢迎朋友们加入!

''三家村精品公开版权书籍声明:''

@@background-color:yellow;
<<<
书籍的分享内容限定为公共版权领域的书籍(参照标准伯尔尼公约),三家村工程 <<footnote "注" "希望能坚持下去,成为一项公益事业">> 确保这些书籍以开放文件格式自由流通,有利于长期保存,并可在各种电子设备上自由阅读,而且不会在已发布书籍资源上声明新的版权,不会在资源文件中添加水印和文件加密以及商业诉求,并鼓励大家在原基础上自由再加工、再创造、再发布。
<<<
@@


 [img width="96" height="80" [selogo]] 
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />


''制作者:''三家村   <i class="fa fa-weixin"></i> <$appear type="popup"show="打赏赞助"  keep="no" $state="sticky">

[img[https://one.rizi.me/Photos/Other/赞赏码小.png]]

</$appear> 

---
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/></div>

{{三家村公开版权精品书目}}

''下载地址:''

[[下载地址一 |http://pan.baidu.com/s/1pKTOA3h]]  
 ^^''百度网盘''^^  |  [[下载地址二|http://url.cn/5PKOEVo]]   ^^''腾讯微云''^^ | [[下载地址三|https://drive.google.com/drive/folders/1rrPjIq_eP9nj5n-dbua726LlWtXudFj6?usp=sharing]]  ^^''~GoogleDrive''^^ | [[下载地址四|https://www.asuswebstorage.com/navigate/s/72531B6AD34444619B1460CE7CB2DBBC4]]  ^^''[[ASUS|https://service.asuswebstorage.com/referrals/73rjx+e8ZYaEjzIAwKb3Se0EJfJOL4LgACQbmKuqDM8MycQRqeIBwyrxQywH3Id3]]''^^  | [[下载地址五|https://mega.nz/#F!SJhBkI4L]] ^^''[[MEGA|https://mega.nz/]]''^^

''分享您的书籍:''
[[上传您的书籍|https://www.dropbox.com/request/wGVQNrIVMFYMO9ha3sjc]]  ^^''基于~DropBox''^^ 或联系我
 ^^''[[Email|Coze]]''^^

''制作工具:''[[Sigil|https://github.com/Sigil-Ebook/Sigil]] |  [[Calibre|https://calibre-ebook.com/]]
''“不二论''”(Advaita),字面解非二元或不二,是一种一元思想体系。''一元论''(Monism)认为世界只有至少一个本原的哲学学说,乃本体论的分支。而相对,或者相异的是''“二元论”'',二元论(dualism)是一种本体论思想,二元论则认为世界由两种不可缺少且相互独立的元素组成,世界的本质是物质和意识两个实体的观点。

''“不二论”''强调自我和梵的绝对“一”和“同”,也就是One and the same。梵,是一种精神产物,仪式(或者祭祀)获取的神秘力量,是宇宙的超越本体和终极实在,这种终极观是实体性的,在思想的最高位置,现世相对来说则只是不真的现象。“不二论”就是指我和梵的唯一、不二,是高度的精神存在,如梵心指清静之心,本体的我思想上达到无我、无它、无世界,我是不二的,无处不在,现实即不存在或“终极实在”一种扭曲、不充分的表现。追求梵心、梵志必须舍弃与现实的根本联系。

《奥义书》主旨是梵我 <<ref "[1]">> 合一,“梵”即我,我即“梵”,人我要没入梵之中,合而为一,了无所限,不死不生。梵与“我”本是息息相关,但由于现象的执迷以致隔断,透过观念与实践,自觉修证,可以恢复本有的大我,实现梵我合一的终极人生境界(有学者研究称,其与服用LSD(D-麦角酸二乙胺)所致的幻觉相似)。

那么“梵”的超越本体的神秘力量从何而来?如果按照“不二论”和《奥义书》所示,“我”和“梵”之间是有一段阻隔或者过程的,要达到“不二”,即“梵”即我,我即“梵”的“同”,即Same,就是修行的过程,依凭内心的历练,消灭“我”之外的一切现世的幻想,从而把渺小的“我”自我,成我为“我佛”,即“梵我合一”的妙境。超自然的力量是在“我佛”之后,至此,可以揭破宇宙的迷幕,超于轮回业报以外,生命获致最终极的自我实现。而从我到“梵”实证的方法论,即法门或梵门,是道;而梵门的术,即为日常修行的布施、瑜伽、烧香、拜佛、口诵等仪式的实践。

以上是“不二论”与“梵”。而佛教,正与之相反。

释迦牟尼实质上是反对梵我这种实质的表达方式。佛家三法印讲的“诸行无常,诸法无我,涅槃寂静”,与正统的梵我表达方式对立。“无常”、“无我”意味着,不但一切法空,而且“我”亦是空的。“梵”与“我”那种肯定性的终极实在观,在佛家的表达中消失了。佛家坚持最终的解脱或涅槃,只能与“无常、无我”这种观念相连,断定梵我的终极性,对于开启无执智慧是有害无益的。也就是说,佛家连“我”也彻底消灭,无“我”,也无不二,是空,是Nothing!

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ <<footnotes "[1]" "梵语“我”意为真正的我、内在的我。古代汉译典籍中就将其译为“我”,不与普通的人称指代加以区别化,现代常译为“梵我”以示区别,也有意译为主体,或俗称的灵魂。">>
<$list filter="[field:book_title[不失者]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="不成问题的问题"><a href="https://book.douban.com/subject/1081422/"
 target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[不成问题的问题]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
2018年底我有计划地安排在2019年元旦开始看这本书 —《黑天鹅》。正如这本书的副标题:如何应对不可预知的未来,未来有正向和负向,如何在当下寒冷的大环境中正向而进,逆势而行,应对不可预知的未来?这确实是一个大问题。

王兴在饭否这么点评过去的2018年:“这是过去10年中最坏的一年,也是未来10年中最好的一年”。好狠的一句话!这句话同样适应于评价2019年。在未来的一年,或者接下来的几年,既潜伏着黑天鹅,灰犀牛也会随时奔袭。

!! 什么是黑天鹅(效应或现象)?

''黑天鹅效应''(英语:Black swan theory)是指极不可能发生,实际上却又发生的事件。主要具有三大特性(来自[[维基百科|https://zh.wikipedia.org/wiki/%E9%BB%91%E5%A4%A9%E9%B5%9D%E6%95%88%E6%87%89]]):

*这个事件是个离群值(outlier),因为它出现在一般的期望范围之外,过去的经验让人不相信其出现的可能。
*它会带来极大的冲击。
*尽管事件处于离群值,一旦发生,人会因为天性使然而作出某种解释,让这事件成为可解释或可预测.(此非要件,只是解释人类现象的一环,仅满足前两者即可称之黑天鹅事件)

纳西姆·尼古拉斯·塔勒布在《黑天鹅》中总结“黑天鹅”必须满足以下三个特点的事件:
 

<<<
首先,它具有意外性,即它在通常的预期之外,也就是在过去没有任何能够确定它发生的可能性的证据。其次,它会产生极端影响。再次,虽然它具有意外性,但人的本性促使我们在事后为它的发生编造理由,并且使它变得可解释和可预测。
<<<

!!“黑天鹅”现象
互联网即黑天鹅现象的典型表现。互联网最初发明于二战期间,主要应用于军事行动时各地的互相通讯,战后此技术转为民用,从此以迅雷不及掩耳之势得以发展和扩张性应用,对世界各个行业造成颠覆性影响,并改变着人们的生活方式。互联网不经意的发明和超乎预期的影响,是现代最大的一只“黑天鹅”。在看一只小一点的黑天鹅 — 伟哥,伟哥最初是以治疗心血管疾病被研制,对男性性功能的治疗作用是在后期临床观察中被发现,从此成为给世界上男人带来自信的神奇蓝色小药丸。

!!为什么我们会视黑天鹅而不见:

# 认知自大以及随之而来的未来盲目性;
#柏拉图式的分类概念,或者说人们如何被简化愚弄,尤其当他们在一个不存在专家的学科里获得了学位时;
#错误的推理方法,尤其是不考虑黑天鹅现象的平均斯坦方法。

!!论据和方法
作者在阐述黑天鹅的产生、发现、监控、遏制并行动时提到的一些论据和结论非常值得深思和研究。
忽视黑天鹅现象的两种内在机制:证实谬误和叙述谬误。

''柏拉图化(柏拉图式 Platonic)'',柏拉图化是指事件被学者或者专家归纳、简化的现象。由于只关注那些纯粹而有明确定义的“形式”而导致的错误称为柏拉图化,这些形式包括物体(如三角形)、社会概念(如乌托邦,即根据某种“理性”蓝图建立的社会),还包括国家。由于柏拉图化,所以大部分人对另外一些没有被定义或者没有明确形状或概念的事物忽略,而学者对事物的分类总会造成复杂性的降低,这是黑天鹅事件的发生器,潜伏着黑天鹅。

柏拉图化是自上而下的、程式化的、封闭思维的、自我服务的、商品化的,非柏拉图化是自下而上的、开放思维的、怀疑的、经验的。

''证实谬误'',我们只关注从已观察到的事物中预先挑选出来的那部分,从它推及未观察到的部分:
或者说我们如何错误地忽略了图书馆中未被开发的部分,也就是倾向于看到能够证实我们已有的知识,而不是未知的知识的东西。''读过的书远远不如未读的书有价值。''而被我们忽视的证据称为沉默的证据。

''叙述谬误'',我们用那些符合我们对明显模式的偏好的故事欺骗自己:

叙述谬误指的是我们无法在不编造理由或者强加一种逻辑关系的情况下观察一系列事实。对事实的解释会与事实混在一起,使事实变得更容易被记住,更符合道理。这种倾向的坏处在于它使我们以为对事物有了更好的理解。叙述行为来自一种根深蒂固的简化事物复杂性的生物需要,因为人类的本性里面喜欢简单的故事,喜欢被总结的事物,喜欢简化(也就是减少事情的影响因素)。(但这一点似乎和奥卡姆剃刀有所违背,见[[思维的惰性]])。

怎么摆脱叙述谬误?通过提出假设和进行检验。强调实验而非讲故事,强调体验而非历史,强调客观知识而非理论。另一个方法是预测并记录预测的结果。

''游戏谬误'',游戏谬误——愚人的不确定性。游戏谬误的一个主要表现:那些应该提醒我们注意不确定性的人不但没有做到这一点,还通过一种秘密途径误导我们,让我们相信事物的确定性。赌场是游戏谬误的典型表现案例,在赌场我们知道规则,能够计算概率。赌博是被简化和驯养的不确定性,是温和的不确定性,属于平均斯坦。赌场把数亿美元花在赌博理论和高科技监视系统上,但风险却来自他们的考虑范围以外。

另外,在游戏(赌博)中,用概率论能成功地计算概率。并且,正如我们倾向于低估运气在生活中的作用,我们还倾向于高估它在概率游戏中的作用。
游戏谬误存在于以下随机环境:随机走动、掷骰子、抛硬币、布朗运动(即花粉颗粒在水中的运动)等。这些环境具备一定随机的性质,但并不是真正的随机性,称之为原始随机性或许更准确。

''沉默的证据'':美化的东西和柏拉图式的简化东西天生容易被看见。这是知识问题的简单延伸,只不过我们看不到的那一面容易被人们忽视而已。这也是沉默的证据问题。它解释了我们看不见黑天鹅现象的原因:我们为已经发生的事担忧,而不是为那些可能发生却实际上没有发生的事。它解释了我们进行柏拉图化的原因,我们喜欢已知的模式和有条理的知识,达到了对现实视而不见的地步。

''思维的懒惰'',见[[思维的惰性]]。

!!观点:

''关于历史:''
世界是通过大的随机变化前进的。

''关于知识:'' ''对许多人而言,知识的强大作用在于制造自信,而不是提高能力。''
我们从过去获得的知识实际上顶多是无关痛痒或虚假的知识,甚至是危险的误导。
我们的知识在增长,但它受到自信增长的威胁,它增长了我们的知识,同时也增加了疑惑、无知和自负。

''关于概率'':概率是一种自由艺术。它是怀疑主义的孩子,而不是一种工具,供随身带着计算器的人用来满足他们制造令人炫目的计算结果和确定性假象的愿望。

''关于专家'':可悲的虚有其表。

> 保罗·米尔(Paul Meehl)和罗宾·道斯等研究者否认专家的能力,他们告诉我们“专家”是最接近骗子的人,他们的思考能力比只使用一个变量进行计算的计算机好不了多少,他们的直觉妨碍了他们的思考,并使他们变得盲目。

不论任何人告诉你任何事,对专家思考过程的错误率提出疑问都是有好处的。不要质疑他的过程,只要质疑他的自信。

因变化而需要知识的事物,通常是没有专家的,而不变的事物似乎会有专家。也就是说,与未来有关,并且其研究是基于不可重复的过去的行业则通常没有专家。

专家就是一群习惯“筛选”的思维狭隘的人。专家的问题在于他们不知道自己不知道什么。

''关于预测'':预测之耻

人们喜欢并热衷预测(这是一种认知自大,面对知识局限性的自大。我们高估自己的知识,低估不确定性,低估未知事物的范围。),但是糟糕的是人们不提预测方面的记录。对一个信息不完整或信息缺失的不具随机性的变量的猜测,与对一个随机变量(比如明天的失业率或明年的股票市场情况)的预测是没有区别的。从这个意义上讲,猜测(我不知道但别人可能知道的事情)与预测(还没有发生的事情)是同一回事。

''关于“信息”'':信息对知识有害。

把一张模糊的消火栓图片——模糊到使他们无法认出图片上是什么——给两组人看。对其中一组,分10次逐步提高图片的清晰度,对另一组分5次提高清晰度。在某个使两组人看到相同清晰度图片的时候停下来,请他们说出看到的是什么。经过较少中间步骤的那一组可能更快地辨认出消火栓。这意味着什么?你提供的信息越多,他们就会形成越多假设,他们的结论就越糟糕。他们看到了更多的随机噪点并将其当成了信息。(这让我想起了一个经典故事:一位年轻的炼金术士有一次被通知,他如果能背诵一种公式,便能使铅转变为银,铜转变为金,而唯一的条件是,当他背诵公式的时候,绝不能想到白象。他学会了公式并试图背诵,不幸他不能使公式生效,因为他一直在认真地不要想到白象。)

我建议,如果你想一步跨入更高级的生命形态,与动物的距离越远越好,那么你最好远离叙述谬误的来源,关掉电视机,尽可能少读报纸,不看博客,训练推理能力以控制决策,对重要决策注意避免使用系统1(即启发性或实验性系统,见[[思考快与慢]]),训练自己辨别情感与经验事实之间的区别。这种对毒害来源的避免还有一个好处:它会改善你的身心状况。同样,请记住在概率(一切抽象概念之母)方面我们是多么肤浅。你不需要再做什么旨在对周围事物有更深理解的事。首要的是,要学会避免“过滤性错误”。

预期中2%的错误率通常实际上达到15%~30%。

!!有趣的案例 
''感恩节的火鸡'':“喂你的那只手也可能是拧断你脖子的那只手”。

> 想象一只每天有人喂食的火鸡。每次喂食都使它更加相信生命的一般法则就是每天得到“为它的最大利益着想”(政客们都这么说)的友善人类的喂食。感恩节前的星期三下午,一件意料之外的事情将发生在它身上,从而导致一次信念的转变。(出自罗素)

''自负的泰坦尼克号船长'':无知的经验主义。经验并不可靠。

> 根据我所有的经验,我没有遇到任何……值得一提的事故。我在整个海上生涯中只见过一次遇险的船只。我从未见过失事船只,从未处于失事的危险中,也从未陷入任何有可能演化为灾难的险境。 ——E·J·史密斯,泰坦尼克号船长,1907年 史密斯船长的船于1912年沉没,成为历史上被提起次数最多的沉船事故。

你的幸福感更多取决于正面情绪出现的次数,心理学家称之为“积极影响”,而不是某次正面情绪的强度。

''叙述的力量'':
读一读这句话“国王死了,王后也死了”,同“国王死了,接着王后死于悲伤”比较一下。

> 小说家E·M·福斯特(E. M. Forster)所做的这个练习说明了信息的简单罗列与情节的差别。但请注意一个关键:虽然我们在第二句话中增加了信息,但实际上减少了整体复杂性。第二句话读起来更为轻松和易于记住,因为我们只剩下一条信息,而不是两条。由于我们能够更不费力地记住它,也就可以把它告诉别人,或者说,把它作为一则打包的信息卖出去。简言之,这就是叙述的定义和功能。

''逻辑错误'':喜欢苹果胜于喜欢橘子,喜欢橘子胜于梨,喜欢梨胜于苹果”的错误。

''归纳之谜'':我们画出一条直线,只是因为我们手边有一把直尺;一个数字在过去1 000天都在增长,使你更相信它会继续增长。但如果你头脑中有非线性模型,它可能意味着数字会在第1 001天下降(哲学家纳尔逊·古德曼Nelson Goodman )。

''“帕斯卡的赌注”'',取自哲学家及(思想)数学家布莱斯·帕斯卡。他的观点如下:我不知道上帝是否存在,但我知道,如果他存在,我做无神论者就会损失很大,而假如他不存在,做无神论者也得不到好处,所以我应该相信上帝。

!!结论/解决办法
我永远不可能知道未知,因为从定义上讲,它是未知的。但是,我总是可以猜测它会怎样影响我,并且我应该基于这一点做出自己的决策。

“帕斯卡的赌注”哲学来树立处理不确定性的核心思想:可以根据这一思想建立一整套决策理论。你只需要减轻事件的影响。如果我的投资组合受到市场崩盘的影响,而市场崩盘的可能性是不可计算的,我能做的就只有购买保险,或者退出,把我不愿意发生损失的那部分金额投入风险较小的证券。

对黑天鹅的应对办法是在思维中避免从众。但在避免上当之外,这种态度受制于一种行为方式,不是思维方式,而是如何将知识转化为行动,并从中找出那些有价值的知识。

通过负面例子而不是正面证据接近真相!

正面黑天鹅事件的影响时,我会非常冒险,这时失败只有很小的影响;当我有可能受到负面黑天鹅事件的袭击时,我会非常保守。

一半时间里我对自己的事务超级保守,另一半时间里我超级冒险。这似乎并没有什么特别,只不过我在其他人冒险的地方实行保守主义,在其他人谨慎的地方冒险。

我不担心人们通常担心的问题,因为它们显而易见,而担心我们的意识和正常过程以外的事物。(我也必须承认我担心的东西不多,因为我努力只担心有计可施的事情。)我不担心困境,而担心失去机会。

你凌驾于争斗与名利思想之上,而不是之外,只要你愿意这样选择。

!! 涉及的一些概念
''高斯分布''(Gaussian distribution), 又称为正态分布(或常态发布 normal distribution),是一个非常常见的连续概率分布。正态分布在统计学上十分重要,经常用在自然和社会科学来代表一个不明的随机变量。理论上的正态分布曲线是一条中间高,两端逐渐下降且完全对称的钟形曲线,所以又叫钟形曲线。赌场概率已知且符合高斯分布(即钟形曲线)、几乎可计算的人类的唯一冒险场所(赌博是被简化和驯养的不确定性)。

[img width=60% [https://one.rizi.me/Photos/webphoto/gaosi.jpg]]


''大数定律'',在数学与统计学中,大数定律又称大数法则、大数律,是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就有越高的概率接近期望值。大数定律很重要,因为它“说明”了一些随机事件的均值的长期稳定性。在重复试验中,随着试验次数的增加,事件发生的频率趋于一个稳定值;人们同时也发现,在对物理量的测量实践中,测定值的算术平均也具有稳定性。比如,我们向上抛一枚硬币,硬币落下后哪一面朝上是偶然的,但当我们上抛硬币的次数足够多后,达到上万次甚至几十万几百万次以后,我们就会发现,硬币每一面向上的次数约占总次数的二分之一,亦即偶然之中包含着必然。同理赌场中也是大数定律在起作用。

平均斯坦的不确定性在平均化之下消失。这就是人们常说的“大数定理”。

''“分形”''(fractal)一词是曼德尔布罗特创造的,用来描述不规则和支离破碎的几何图形,它来自拉丁语的fractus一词。分形是几何图形在不同尺度上的重复,显示出越来越小的自相似图形。小的局部在某种程度上与整体具有相似性。

''递归'',是对某一事物自身无限使用某种法则。你可以把图形分解为越来越小的图形,永无止境,你会不断看到能够辨认的图形。

''幂律'',幂律存在是因为有幂。幂律来自上世纪20年代对于英语单词频率的分析,真正常用的单词量很少,很多单词不常被使用,语言学家发现单词使用的频率和它的使用优先度是一个常数次幂的反比关系。简单来说,幂律就是两个通俗的定律,一个是长尾理论,只有少数大的门户网站是很多人关注的,但是还有一个长长的尾巴,就是小网站,小公司。长尾理论就是对幂律通俗化的解释。另外一个通俗解释就是马太效应<<ref "[1]">>,穷者越穷富者越富。

80/20法则它是一种标志性的幂律,实际上幂律的发现正是从它开始的。当时维尔弗雷多·帕累托观察到意大利80%的土地被20%的人占有。有人运用这一法则指出,80%的工作由20%的人完成;或者80%的工作只产生20%的结果,反之亦然。

''觅母(memes)'':人类学家、认知科学家及哲学家丹·斯铂佰提出了观点表述上的传染性。被人们称为“觅母”(memes)。也就是以人体为媒介传播并互相竞争的思想,并不真的像基因一样。思想的传播有一定的结构。思想会传播是因为作为媒介的自私人类对它们感兴趣,并且喜欢在复制过程中将它们扭曲。

''锚定'',是一种经典的思维机制。通过设想一个具体数字,你降低了对不确定性的不安,然后你“向它下锚”,就像在真空中抓紧一个物体。这种锚定机制是不确定性心理学的鼻祖丹尼·卡尼曼和阿莫斯·特沃斯基在早期对启发式思维和认知偏差的研究中发现的。研究是这样进行的。卡尼曼和特沃斯基让受试者启动未来之轮。受试者首先看轮子上的数字,他们知道数字是随机的,然后估计加入联合国的非洲国家的数量。轮子上的数字较小的受试者估计了一个较小的数量,轮子上的数字较大的受试者估计了较大的数量。

''休谟问题'',即所谓从“是”能否推出“应该”,也即“事实”命题能否推导出“价值”命题,它是休谟在《人性论》中提出的一个著名问题。这个问题在西方近代哲学史上占据重要位置,许多著名哲学家纷纷介入,但终未有效破解。休谟指出,大多数人都相信只要一件事物伴随着另一件事物而来,两件事物之间必然存在着一种关联,使得后者伴随前者出现,休谟在《人性论》以及后来的《人类理解论》一书中反驳了这个理论,他指出虽然我们能观察到一件事物随着另一件事物而来,我们并不能观察到任何两件事物之间的关联。而依据他怀疑论的知识论,我们只能够相信那些依据我们观察所得到的知识。因果联系之间其实存在一个信心或盼望的跳跃,比如我们认为明天必定会来到是基于经验中对昨天今天与明天的“知识”,不自觉的把明天作为今天的结果,这是盼望和信心,不是知识!

休谟因果问题——“我们无从得知因果之间的关系,只能得知某些事物总是会连结在一起。” 

休谟归纳问题——:“我们有什么理由从对个别事例的观察中引出普遍性的结论?”“从单称陈述到全称陈述的推论如何能得到证明?” 

休谟伦理问题——“从‘是’中推不出‘应当’”。


//2019年02月16日周六下午08:04:49//

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "在社会学中,马太效应有一个不那么文学化的名字:“累积优势”。这段《圣经》中的文字中已经体现了突破性法则:“凡有的,还要加给他,叫他多余;没有的,连他所有的也要夺过来。”(《圣经·马太福音》詹姆斯一世钦定版)">>


<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[且借纸遁]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
东方,是西方人的东方,西方人主要指欧洲人。欧洲的东方始于土耳其,终于中国(中国之于欧洲成为远东)。伊斯坦布尔就是横亘在欧亚大陆,跨越东西方的土耳其最大城市。地理上的伊斯坦布尔只是人为加上的标签,并无多大意义。魅力之于伊斯坦布尔在其背后的历史和文化,就其历史上对其称呼足以证明其过往的辉煌:拜占庭、新罗马、君士坦丁堡、奥斯曼帝国首都。在文化方面,其在世界两大宗教 --- 基督教和伊斯兰教 --- 的发展过程中起着举足轻重的作用。

之所以读《伊斯坦布尔:面纱下的七丘之城》,有两个原因的促使。一是对“拜占庭“、”君士坦丁堡“、”伊斯坦布尔“这些散发着历史光芒的词汇的迷惑和魅力吸引;二是,对土耳其过往的辉煌的探索以及现代世俗土耳其的解读。

《伊斯坦布尔:面纱下的七丘之城》原名《剑桥伊斯坦布尔史》。这一点出版商很不厚道,把冷冰冰的原名深藏,拿文艺气息浓厚的新书名蛊惑读者。如果当作历史读物来读,实属诚意之作,旁征博引,资料翔实,甚至有点唠叨。但万不能像我一样,以为是类似《[[我的应许之地|我的应许之地]]》这样颇具情节和自带温度的书。除此,这本书的翻译也不佳,很多句子晦涩拗口,蹩脚难懂。

尽管如此,还是在书中找到一些有趣的东西。

奥斯曼帝国历代统治者“嗜建”传统。这和中华帝国皇帝们有点像,历届统治者都喜欢不余余力的大兴土木,只不过奥斯曼帝国君王(苏丹)热衷兴建的是公共设施:清真寺(包括学校、医院等附属机构)和澡堂子(哈马姆),而中国皇帝们喜欢修建皇宫、庙宇。在土耳其,管理和运营清真寺或澡堂子的机构叫威齐夫,它是城市的核心机构,通常被翻译成“敬虔基金会”。威齐夫是一个宗教组织,但它也是一个纯粹的福利体系。

> 对伊(伊斯坦布尔)城很多居民来说,这是一个从生到死的服务机构。一个人可以出生在威齐夫之家,睡在威齐夫摇篮里,靠威齐夫的供应获得吃喝,在威齐夫图书馆阅读,在威齐夫学校教书,从威齐夫管理机构领取工资,并且,死的时候,有威齐夫的棺梈可用并会埋在威齐夫的墓地里。1给百姓提供吃食、教育、住房、洗涮以及医疗救治的,都是由威齐夫这个机构完成的。这个机构给人们提供生计,并在自然灾害的时候对他们施行救援。人们到威齐夫商店购物,在威齐夫清真寺祈祷,这座城市的外在面貌在很大程度上是威齐夫构成的。一句话,生活在伊斯坦布尔而没有威齐夫的话,那是无法想象的。 威齐夫其实就是捐款,其收入被用来分配给慈善方面的需要。

威齐夫在土耳其政治和经济生活中起的作用至关重要,它即是经济的动力,也是国家经济机器上的核心引爆活塞。城市的经济生活在很高程度上是围着威齐夫在转的,不仅依赖于它而且受其刺激而发展。威齐夫不仅是伊斯坦布尔福利供应的中心,也是其经济中枢。

> 穆罕默德二世在征服君士坦丁堡之后就充分利用威齐夫机构,建起无数的客店、市场、店铺以及其他经济实体来维持其生存。这带来大幅度的经济增长,给城市带来生机。

> 大型皇家清真寺院以及或大或小的威齐夫除了体现统治者的权力和合法性,还对奥斯曼社会的运作具有更进一步的重要贡献。它们是社会经济保持良好状况的基础。它们提供就业机会、拥有商业地产并且刺激经济活动。

威齐夫这样的机构很有意思,既有国家资本主义的特色,财团运作,公司化运营;又有社会主义性质,具有慈善和社会福利的一面。从国家管理的角度看,通过清真寺控制着人民的思想,又通过澡堂子、学校等管控着人民的经济活动和行为。如果说从中国历史中找到与威齐夫相似的历史现象,也只有宋代的资本主义萌芽可以相提并论了。

土耳其浴大家并不陌生,但洗澡对土耳其人的重要性,澡堂子在土耳其人生活中的地位,看后让人有点吃惊。

> 如果西方世界以华盛顿、费城和纽约那样的宏伟建筑自夸,土耳其则以闻名世界的洗浴而骄傲。洗浴是土耳其帝国最令人瞩目的社会现象之一。

澡堂子在土耳其已经上升到国家战略的高度。

> 每当苏丹征服了一座城市之后,首先建起来的建筑,除了清真寺和市场,就是哈马姆(澡堂子)。

广为流传的土耳其谚语说,“清洁来自信仰”。澡堂子的渊源来自于宗教信仰的需要。澡堂子是土耳其人生活的中心,社交的中心和消息来源的中心。(下面有伊斯坦布尔皇家澡堂子的介绍,好像许子东和窦文涛都没有认真备课,至少是没有看过这本书。周轶君小姐对中东及伊斯兰、阿拉伯世界颇为熟悉。)

> 这里是社会生活的枢纽站,是支撑奥斯曼社会架构的中心柱石。人生很多仪式都是在这里举行的......哈马姆还在婚礼中扮演重要角色,女孩子嫁妆中很重要的一个部分就是哈马姆套具,包括一些高级绣花澡巾、特制的用银线装饰的木屐和一个哈马姆浴盆。

<<imageSlider  [[https://one.rizi.me/Photos/ART/482px-Le_Bain_Turc,_by_Jean_Auguste_Dominique_Ingres,_from_C2RMF_retouched.jpg]]    "《土耳其浴女》是法国画家让·奥古斯特·多米尼克·安格尔于1862年完成的一幅油画。显示了众多裸体浴女在土耳其皇宫浴室内的情景。现藏于法国巴黎卢浮宫。">>

> “浴池的外间非常安静。这里有一位基督徒躺在床上吸烟;那边的角落里有一位伊斯兰教徒跪在地毯上祷告,再远一点,有一位长须及胸的,正在阅读《可兰经》,而在他旁边,有一个犹太人正在梳洗打扮。”

如果说在中华文化中能找到类似土耳其澡堂子的地理承载,唯有中国茶馆可选了,但其在人民的生活中纯粹是娱乐和消遣,少了形而上的宗教意义,中国人付之阙如。

其实现代的伊斯坦布尔在西方(欧洲)的影响一下正在蜕变为世俗之城(如果这么说,中国的北京、西安等一直都是世俗之城),虽有伊斯兰教、基督教以及东正教的存在,然其已经更现代化起来了。现代化即世俗化。这样挺好,至少不会像土耳其东边邻居们那样,人们水深火热地活在宗教正义的名义下。

//如果想了解更多关于土耳其以及伊斯坦布尔相关历史和文化信息,推荐看以下视频:(需科学上网)//

<$appear show="more {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} less">


''《锵锵行天下》 : 东方快车谋杀案''

<iframe width="560" height="315" src="https://www.youtube.com/embed/PwuZvbcKb0s" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》:探访土耳其纯真博物馆''

<iframe width="560" height="315" src="https://www.youtube.com/embed/TPLgzDGTEpQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》 :采访诺奖得主帕慕克''

<iframe width="560" height="315" src="https://www.youtube.com/embed/KIfCwZH5ZQo" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》 :“皇家大澡堂”''

<iframe width="560" height="315" src="https://www.youtube.com/embed/IVgqYZ51w8Q" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''【锵锵行天下】:探访圣索菲亚大教堂,屹立千年见证家族与帝国末路''

<iframe width="560" height="315" src="https://www.youtube.com/embed/V8-RUcB72B4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

</$appear>
//
2018年10月07日周日上午10:47:56//
!!! 哈罗德·伊萨克:《族群》
所谓现代人其实对自己的族群归属仍然有眷念,因为越到现代,人就越孤独。可是,正如伊萨克所说,“族群意识可能建立一个国家,也可能撕裂一个国家”。目前我们看到的族群意识有两种:一种族群意识,只是在探索一群人的共同历史,使他们在现代的全球化和同一化的时代,维持自身关于“根”的想象和依赖,使他们并不因为服装、生活、经济、居住地的变化而彷徨无所依,并培养一种多元的宽容态度,换句话说,是在同一性的文明进程中保存多元性的文化认同;但是,另一种族群想象,却有可能在理想化和圣洁化的纯粹性族群国家追求中,建立自身的光荣想象,却把其他族群的存在当作污秽,展开对异族的清洗和迫害,他们把传说形塑成历史,把逐渐形成的族群当作天生的种族,把各种不同特色的文化当作文明的等级差异,使各个族群充满不安和紧张。

!!! 季镇淮:《司马迁》
当我们开始阅读并领会古典文化时,我们就是重塑(推理与想象并有)过去的生活与思考。当我们欣赏并感动于古典时,我们就是在缩短我们与过去之间的那种文化和时间上的距离,当我们以为了解并解释这些古典的时候,我们是在用一种与我们兴趣、知识、价值相近的“理解”在重新建构古典。从这个意义上说,黑格尔的“绝对精神”(the Absolute Spirit),贯穿一切并构成脉络。

2019年03月09日周六下午11:02:46
<<<
世界上本没有艺术这种东西,有的只有艺术家。
<<<


<<imageSlider [[https://i.loli.net/2017/08/11/598d6c12a481e.png]]
"//丢勒·画家之母肖像//">>

艺术的故事,有两个层面的理解,一个是创作艺术背后的故事;一个是艺术作品内容涵盖的故事。而贡布里希 (Sir E.H.Gombrich)这本书--《艺术的故事》主要是前者,正如第十六次再版前言所述“本书用朴素的语言重新讲述美术发展史,应该让读者能够看出它是怎样前后连贯,帮助读者鉴赏艺术作品;不是求助于热情奔放的叙述去实现这个目标,而是给读者一些启示,说明艺术家可能怀有的创作意图。”至于后者,由于出于对西方艺术(尤其是绘画艺术)的喜欢,加上对绘画内容所载内容--尤其多的是希腊或罗马神话--不成系统的了解,所以企图从西方艺术作品入手,一方面熟识其作品,一方面梳理西方神话系列, 写过不少小文,赏析作品,揭示故事,也算是艺术的故事吧,不过我整理为“艺术与历史”系列([[前往阅读|https://mp.weixin.qq.com/s?__biz=MjM5NjY1MDg4MA==&mid=110000120&idx=1&sn=bce3461e4c5ac8c2cc8fcdf7fd439023&chksm=259cdd1712eb5401f225a4d0ab1594de19a064c498b00af677e4cf458cb05d056a110eb0f776#rd]])。

<<imageSlider [[https://one.rizi.me/Photos/webphoto/La Libertad Egon Schiele.jpg]]
"//La Libertad Egon Schiele//">>

贡布里希 (Sir E.H.Gombrich)在整理收纳入《艺术的故事》的艺术作品,遵循三个原则:一,凡是不能用插图复印出来的作品概不论述;二、本书中论述真正的艺术作品,排除一切只作为一种趣味或时尚的标本看待才可能有些意思的作品;三、作者力求自我克制,发誓要在选择作品时不被个人的独家观念所诱惑,以免人所共知的杰作被我个人偏爱的作品排挤下去。正是作者对艺术作品严格的筛选标准,《艺术的故事》已经再版多大十几次,成为奉献给那些需要对一个陌生而迷人的领域略知门径的读者欣赏指南。正如作者所言


<<<
“本书可以向初学者展示事实状况,而不让繁枝细节干扰思路;可以帮助初学者充实学力,以便把目标更高的著作中一页页不计其数的姓名、时期和风格理出清楚的头绪,为参考更专门的书籍打下基础。编写本书时,我首先想到的对象是刚刚独自发现了这个艺术世界的少年读者。”
<<<


<<<
我认为对这个历史有所了解可以帮助我们理解为什么艺术家要使用某种特殊的创作方式,或者为什么他们要追求某些艺术效果。特别是,这是一条很好的途径,能使我们对艺术作品的独特性质眼光敏锐,从而提高我们对细微差异的感受能力。要想学会怎样欣赏艺术作品的独特价值,大概这是一条必由之路。
<<<


书中鲜有涉及中国艺术,而作者给出的原因是,中国的艺术有更多的时间去追求雅致和微妙,因为公众并不那么急于要求看到出人意表的新奇之作。而西方艺术的故事就是无休无止的实验的故事,就是追求前所未见的新颖和独创效果的故事。事实也是如此,中国的一些艺术手法基本上是一脉相承,几年来很少在术的方面有所改变。

//2017年12月01日 下午 10:41:40//
<$list filter="[field:book_title[世界美术名作二十讲]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[世界顶级思维]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[东京一年]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:book_title[东北游记]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[东坡志林]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[中国哲学十九讲]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:book_title[中国哲学十讲]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[中国小说史略]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
《我书架上的神明》这本书号称是''中国当代知识分子的思想资源和心路历程'',其模仿了[[《哈佛书架:100位哈佛大学教授推荐的最有影响的书》|https://www.asuswebstorage.com/navigate/s/46D1AED36A064B369797A0BAD50D95CA4]]([[书目|https://www.asuswebstorage.com/navigate/s/60BBB01989914B62A42179288298F7B34]])的调查创意,移植中国知识界,透过中国71位知识分子回答“哪些书对你的思想的形成产生过帮助?”和“ 为什么?”此两个问题,罗列出一个长长的书单。此一方法也不失为找到好书读的方法,通过各个领域翘楚所荐,找到各个领域的好书。退而求其次也可以看作是一则则读书笔记或者书评吧。

现在书单整理如下,自飨,共飨。

1. ''艾晓明'' 中山大学中文系教授

''研究方向:''中国现当代文学、比较文学与世界文学、女权主义

''推荐书目:''

# 《文学讲稿》,[美]纳博科夫著,申辉慧译,上海三联,2005

''理由:''纳博科夫认为,要做一个优秀读者,并不是一定要参加一个读书会,或者与书中主人公认同,或者是自己也写东西,而是:1. 须有想象力。2. 须有记性。3. 手头应有一本字典。4. 须有一定的艺术感。


<<<
“风格和结构是一部书的精华,伟大的思想不过是空洞的废话”

聪明的读者在欣赏一部天才之作的时候,为了领略其中的艺术魅力,他不只是用心灵,也不全是用脑筋,“而是用脊椎骨去读的”
<<<

2. ''白谦慎'' 波士顿大学艺术史系终身教授

''研究方向:''艺术与社会史

''推荐书目:''

# 《谈美书简》(朱光潜著,上海文艺出版社,1980)
# 《美学散步》(宗白华著,上海人民出版社,1981
#《批判哲学的批判:康德哲学述评》,李泽厚著,人民出版社,1979)
#《意图的模式:关于图画的历史说明》([英]巴克森德尔著,曹意强等译,中国美术学院出版社,1997 Painting and Experience in 15th century Italy,Michael Baxandall,Oxford University Press,1972)
#《东晋门阀政治》(田余庆著,北京大学出版社,1989)

''理由:''
受20世纪80年代的文化热和美学热的影响;《东晋门阀政治》写作的慎重态度。虽说开卷有益,但影响我们的,常常是人和事,不见得是书。

//
2018年02月14日周三下午10:52:48//

3. ''陈方正 '' 香港中文大学中国文化研究所所长

''研究方向:''现代化比较、科技与现代化关系以及科学哲学,近年来致力于科学史研究。

''推荐书目:''

# 《中国历代政治得失》,钱穆著,北京三联,2002
#《国史大纲》,钱穆著,商务印书馆,1994
#《微积学发凡》,郑太朴著,台湾商务印书馆,1968
#《柯氏微积分学》,[德]库兰特著,朱言钧编译,中华书局,1952
#《膨胀的宇宙》,[英]爱丁顿著,曹大同译,商务印书馆,1937
#《原子及宇宙》,[德]黎铿巴著,陈岳生译,商务印书馆,1936
#《竞逐富强:西方军事的现代化历程》,[美]麦克尼尔著,倪大昕、杨润殷译,学林出版社,1996
#《法律与革命:西方法律传统的形成》,[美]伯尔曼著,贺卫方等译,中国大百科全书出版社,1993
#《法律与资本主义的兴起》,[美]泰格、[美]利维著,纪琨译,学林出版社,1996
#《朱熹的历史世界》,余英时著,北京三联,2004

''理由:''

引领进入科学的启蒙读物。《朱熹的历史世界:宋代士大夫政治文化的研究》,这是具有开创性的一部中国学术—政治思想史,穷搜经典,发覆探幽,达到了如此的深度、广度以及结构上的完整、严密。

//
2018年02月17日周三下午9:35:48//

''下载地址:''

[[《我书架上的神明》|https://www.asuswebstorage.com/navigate/s/9AD66DEE446E46A3B71F07C5DB8860914]](mobi格式)
百年思潮的演变和特殊的历史阶段。

! ''1900年 - 1911年''

!! 概述:
新旧交替 青黄不接

清代已强弩之末,西方列强割地盘踞,地方军阀已经形成,进步人士暂露头角,民众生活凄苦而不化。


! ''1911年 - 1920年''
!! 概述:
这是个变革的年代,是大师辈出的年代,是思想、学术突飞猛进而又激烈冲突的年代。我称之为''“黄金年代”''。

!! 思想潮流:
(旧)儒教、文化启蒙、个性解放和自由主义、朴素的民族主义、民族虚无主义  <<ref "[1]">>

!! 标志事件:
#白话运动
#妇女解放运动 
#新生活运动 
#五四运动
#《新青年》杂志

!! 标志人物:
辜鸿铭、蔡元培、胡适、陈独秀、周作人、周树人、钱玄同等


! ''1921年 - 1949年''

!! 概述:
这是个文人站队、军阀占位、党派迫害的年代;也是个个人斗争、民族战争的战火纷飞的年代 --- 个人信仰斗争、抗日战争和国共内战。文人从此开始政治化。

!! 思想潮流:
集体主义、马克思主义、共产主义、三民主义、宏大的民族主义 

!! 标志事件:
# 陈独秀和胡适思想分途、《新青年》分裂;
# 陈独秀上海成立共产党小组 --- 共产党成立 ,《共产党》创刊;
#北伐战争
# 1931年“918”事变
#国共两次合作
#45年日本投降
#中华人民共和国成立

!! 标志人物:
陈独秀、毛泽东

!!! 政治文人(悲剧文人):
矛盾、鲁迅、叶绍钧、冰心、巴金、沈从文、郭沫若、老舍、曹禺等


! ''1949年 - 1970年''
!! 概述:

朴素的家国建设

!! 思想潮流:

!! 标志事件:
#上山下乡运动

!! 标志人物:

! ''1966年 - 1978年''
!! 概述:
文化大革命。文人进入冰封期。

!! 思想潮流:


!! 标志事件:
# 无产阶级文化大革命
#毛泽东去世
# 粉丝四人帮


!! 标志人物:

! ''1978年 - 2000年''

!!  ''1978年 - 1988年''
!!!  概述:
这是一个完整的阶段。

在黑夜里走的人,终于看到了曙光;压抑的思想终于可以得到喘息。尽管短暂,弥足珍贵。这个时期出现了港台热、出国热、下海热和思想大讨论。 也是一个权力寻租和民间经济骚动的年代,出现了第一批民营企业家。我称之为''“白银时代”''。

!!!  思想潮流:
新启蒙运动(世界各种思想被引进来被讨论)、理想主义

!! 标志事件:
# 77年回复高考
# 78年改革开放,一部分先富起来
#第一批民营企业家出现:哇哈哈、南街村等
#伤痕文学、寻根文学、西北风等流行

!! 标志人物:
北岛、王蒙

!!  ''1988年 - 2000年''
!!!  概述:
相比78-88这十年,这是一个混乱不堪的阶段、价值观错乱的阶段。中国完全告别了传统社会,进入商品经济,所有的价值都重新被评估,标准只有一个:金钱!伴随着前十年的改革开放,社会出现了无数问题。经济飞速发展带来了无数暴富的机会。传统知识阶层被边缘化、理想主义消亡。我称之为“青铜年代”。

!! 标志事件:
# 六/四/事/件
# 北京亚运会
# 疯狂炒股、南下淘金、海南创业.....
#人文精神大讨论(92-95年)

!! 标志人物:
李慎之、

! ''2000年 - 2010年''
!! 概述:
不完全的市场经济开始执行,朴素的互联网网民开始出现,第一批互联网企业冒出。我称之为“白开水年代”。

!! 思想潮流:
拜金主义、精英的利己主义、市侩主义、狭隘的民族主义、互联网恐怖主义、犬儒主义<<ref "[2]">>

!! 标志事件:
#网络出现在人们的生活中;
# 天涯论坛火热,涌现出一批网络知名ID;
# 网络小说开始流行(玄幻、鬼故事、小情小调的青春文学流行)
# 大学毕业不再包分配
# 房地产热盛行
# 互联网泡沫出现


! ''2010年 - Now''
!! 概述:
移动互联网浪潮 大数据时代 前AI时代 互联网原住民出现。文人从此娱乐化!

!! 思想潮流:
实用主义、自由主义、新儒家(前五四)、新左派、犬儒主义、虚无主义

!! 标志事件:
# 小米成立
#  微信盛行
# 公众号、朋友圈进入人们正常生活
# 网络支付成为日常必备
# 佛系流行

!! 标志人物:


---
欢迎交流,提供您所认识和解读的时代变革和思潮演变的轨迹。
{{Coze}}

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "犬儒主义(Cynicism)指讥诮嘲讽,愤世嫉俗,玩世不恭。犬儒主义诞生于公元前5世纪的希腊,指一种对文化价值的对抗精神,一种深刻的怀疑。它认为世界是不值得严肃对待的,不妨游戏之。到了现代,犬儒主义的含义发生了一定的变化,但是其对世界的不信任和拒绝的态度没有变。犬儒主义者由于政治的黑暗而远离政治、放弃政治,拒绝参与政治,或遁入孤独和内闭,或转向任诞的审美主义,而其骨子里则是虚无主义。他们对于世界保持了清醒的距离意识,但是却不敢或不愿与之正面对抗,而以一种嬉笑怒骂、冷嘲热讽的态度来曲折地表达自己的不满和妥协混合的矛盾立场。">>

 <<footnotes "[1]" "当代中国民族主义者有下列类型:追求中华民族利益最大化的,可称为“Realist Nationalism”(现实民族主义);支持中华民族所建立的政体及其强大的,可称为“Statist Nationalism”(中央集权民族主义);支持在国际社会推广中华民族代表的价值观的,可称为“Civic Nationalism”(公民民族主义);强调血浓于水、坚持捍卫中华民族的尊严与地位的,可称为“Primordial Nationalism”(原始民族主义)。">>
!结果:
<<imageSlider  [[https://cl.ly/oqCd/Snipaste_2018-01-15_17-24-34.png]]    "点击展开">>

中央研究院第一届81名院士,在1949年的人生抉择。去台湾的10人,去它国的12人,留在内地的近60人。这些全中国最聪明的大脑们,高达74%的人对中国未来发展产生严重误判,付出惨重代价,政治运动中不幸自杀或批斗致死14个。学识渊博,而见识浅薄。

!人物:
<$details summary="点击展开" tiddler="DetailsWidget" open="y" class="warning" state="myTempState">

[img[https://cl.ly/oqxT/DTWQe31U8AAcBbk.jpg]]
</$details>
<$list filter="[field:book_title[中国馔馐谭]] -[title[Manage Books]] -[title[Library Tracker]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
@@.note
''Keywords:'' {{!!description}}
@@

让我们先提出一些定义。

一、经典作品是那些你经常听人家说"我正在重读……"而不是"我正在读……"的书。

至少对那些被视为"博学"的人是如此;它不适用于年轻人,因为他们处于这样一种年龄: 他们接触世界和接触成为世界的一部分的经典作品之所以重要,恰恰是因为这是他们的最初接触。

代表反复的"重",放在动词"读"之前,对某些耻于承认未读过某部名著的人来说,可能代表着一种小小的虚伪。为了让他们放心,只要指出这点就够了,也即无论一个人在性格形成期阅读多么广泛,总还会有众多的重要作品未读。

任何人如果读过希罗多德和修昔底德的全部作品,请举手。圣西门又如何?还有雷斯枢机主教?即使是十九世纪那些伟大的系列小说,通常也是提及多于读过。在法国,他们开始在学校读巴尔扎克,而从各种版本的销量来判断,人们显然在学生时代结束后还在继续读他。但是,如果在意大利对巴尔扎克的受欢迎程度作一次正式调查,他的排名恐怕会很低。狄更斯在意大利的崇拜者是一小撮精英,他们一见面就开始回忆各种人物和片断,仿佛在谈论他们在现实生活中认识的人。米歇尔•布托多年前在美国教书时,人们老是向他问起左拉,令他烦不胜烦,因为他从未读过左拉,于是他下决心读整个《鲁贡玛卡家族》系列。他发现,它与他想像中的完全是两回事: 它竟是寓言般的、神话学式的系谱学和天体演化学,他后来曾在一篇精彩的文章中描述这个体系。

上述例子表明,在一个人完全成年时首次读一部伟大作品,是一种极大的乐趣,这种乐趣跟青少年时代非常不同(至于是否有更大乐趣则很难说)。在青少年时代,每一次阅读就像每一次经验,都会增添独特的滋味和意义;而在成熟的年龄,一个人会欣赏(或者说应该欣赏)更多的细节、层次和含义。因此,我们不妨尝试以其他方式。

二、经典作品是这样一些书,它们对读过并喜爱它们的人构成一种宝贵的经验;但是对那些保留这个机会,等到享受它们的最佳状态来临时才阅读它们的人,它们也仍然是一种丰富的经验。

因为实际情况是,我们年轻时所读的东西,往往价值不大,这又是因为我们没耐性、精神不能集中、缺乏阅读技能,或因为我们缺乏人生经验。这种青少年的阅读可能(也许同时)具有形成性格的作用,理由是它赋予我们未来的经验一种形式或形状,为这些经验提供模式,提供处理这些经验的手段,比较的措辞,把这些经验加以归类的方法,价值的衡量标准,美的范例: 这一切都继续在我们身上起作用,哪怕我们已差不多忘记或完全忘记我们年轻时所读的那本书。当我们在成熟时期重读这本书,我们就会重新发现那些现已构成我们内部机制的一部分的恒定事物,尽管我们已回忆不起它们从哪里来。这种作品有一个特殊效力,就是它本身可能会被忘记,却把种籽留在我们身上。我们现在可以给出这样的定义:

三、经典作品是一些产生某种特殊影响的书,它们要么自己以遗忘的方式给我们的想像力打下印记,要么乔装成个人或集体的无意识隐藏在深层记忆中。

基于这个理由,一个人的成年生活应有一段时间用于重新发现我们青少年时代读过的最重要作品。即使这些书依然如故(其实它们也随着历史角度的转换而改变),我们肯定已经改变了,因此后来这次接触也就是全新的。

所以,我们用动词"读"或动词"重读"也就不真的那么重要。事实上我们可以说:

四、一部经典作品是一本每次重读都好像初读那样带来发现的书。

五、一部经典作品是一本即使我们初读也好像是在重温我们以前读过的东西的书。

上述第四个定义可视为如下定义的必然结果:

六、一部经典作品是一本从不会耗尽它要向读者说的一切东西的书。

而第五个定义则隐含如下更复杂的方程式:

七、经典作品是这样一些书,它们带着以前的解释的特殊气氛走向我们,背后拖着它们经过文化或多种文化(或只是多种语言和风俗习惯)时留下的足迹。

这同时适用于古代和现代经典。如果我读《奥德赛》,我是在读荷马的文本,但我也不能忘记尤利西斯的历险在几个世纪以来所意味的一切事情,而我不能不怀疑这些意味究竟是隐含于原著文本中,还是后来逐渐增添、变形或扩充的。如果我读卡夫卡,我就会一边认可一边抗拒"卡夫卡式的"这个形容词的合法性,因为我们老是听见它被用于指称可以说任何事情。如果我读屠格涅夫的《父与子》或陀斯妥耶夫斯基的《恶魔》我就不能不思索这些书中的人物是如何继续一路转世投胎,一直到我们这个时代。

读一部经典作品还一定会令我们感到意外,当我们拿它与我们以前所想像的它比较。这就是为什么我们总要一再推荐读第一手文本,尽量避免二手书目、评论和其他解释。中学和大学都应加强这样一个想法,也即任何一本讨论另一本书的书,所说的都永远比不上被讨论的书;然而他们竭尽全力要让学生相信的,事实上恰恰相反。这里存在一种流行很广的价值的逆转,即是说,导言、批评机器和书目被用得像烟幕,遮蔽了文本在没有中间人的情况下必须说和只能说的东西 --而中间人总是宣称他们所知比文本自身还多。因此,我们可以总结:

八、一部经典作品是这样一部作品,它不断让周围制造一团批评话语的尘雾会,却总是把那些微粒抖掉。

一部经典作品不一定要教一些我们不知道的东西;有时候我们在一部经典作品中发现我们已知道或总以为我们已知道的东西,却没有料到那个经典文本早就说了(或那个想法与那个文本有一种特殊联系)。这种发现同时也是非常令人满足的意外,例如当我们弄清楚一个想法的来源,或它与某个文本的联系,或谁先说了,我们总会有这种感觉。综上所述,我们可以得出如下定义:

九、经典作品是这样一些书,我们越是道听途说,以为我们懂了,当我们实际读它们,我们就越是觉得它们独特、意想不到和新颖。

当然,发生这种情况通常是因为一部经典作品的文本"起到"一部经典作品的作用,即是说,它与读者建立一种个人关系。如果没有火花,这种做法就没有意义: 出于职责或敬意读经典作品是没用的,我们只应仅仅因为喜爱而读它们。除了在学校: 无论你愿不愿意,学校都要教你读一些经典作品,在这些作品当中(或通过把它们作为一个基准)你以后将辨别"你的"经典作品。学校有责任向你提供这些工具,使你可以作出你自己的决定;但是,只有那些你在学校教育之后或之外选择的东西才有价值。

只有在非强制的阅读中,你才会碰到将成为"你的"书的书。我认识一位出色的艺术史专家,一个极其广博的人,在他读过的所有著作中,他最喜欢《匹克威克外传》,他在任何讨论期间,都会引用狄更斯这本书的片断,并把他生命中每一个事件与匹克威克的生平联系起来。渐渐地,他本人、宇宙及其基本原理,都在一种完全认同的过程中,以《匹克威克外传》的面目呈现。如果我们沿着这条路走下去,我们就会形成对一部经典作品的想法,它既令人仰止又要求极高。

十、一部经典作品是这样一个名称,它用于形容任何一本表现整个宇宙的书,一本与古代护身符不相上下的书。

这样一个定义,使我们进一步接近关于那本无所不包的书的想法,马拉梅梦寐以求的那种书。但是一部经典作品也同样可以建立一种不是认同而是反对或对立的强有力关系。卢梭的所有思想和行动对我都十分亲切,但是它们在我身上催发一种要抗拒他、要批评他、要与他辩论的无可抑制的迫切感。当然,这跟我觉得他的人格与我的性情难以相容这一事实有关,但是,如果这么简单的话,则我避免读他就行了;事实是,我不能不把他看成我的作者之一。所以,我要说:

十一、"你的"经典作品是这样一本书,它使你不能对它保持不闻不问,它帮助你在与它的关系中甚至在反对它的过程中确立你自己。

我不相信需要为我使用"经典"这个名称辩解,我这里不用古代、风格和权威等字眼来区分。(关于这个名称的上述种种意义的历史,弗朗哥•福尔蒂尼为《伊诺第百科全书》第三册撰写的"经典"条目有极详尽的阐述。)基于我这个看法,一部经典作品的不同之处,也许仅仅是我们从一部不管是古代还是现代、但在一种文化延续性之中有它自己的位置的作品那里所感到的某种共鸣。我们可以说:

十二、一部经典作品是一部早于其他经典作品的作品;但是那些先读过其他经典作品的人,一下子就认出它在众多经典作品的系谱图中的位置。

至此,我再也不能搁置一个关键问题,也即如何协调阅读经典与阅读其他一切不是经典的文本之间的关系。这个问题与其他问题有关,例如: "为什么要读经典作品,而不是读那些使我们对自己的时代有更深了解的作品?"和"我们哪里有时间和闲情去读经典作品?我们已被有关现在的各类印刷品的洪水淹没了。"

//作者:伊塔洛.卡尔维诺//
之前总结的[[阅读行为眼动模型]]大多是西方人的研究结果,是建立在字母文字阅读基础之上的。中文以及日本、韩文等东亚语言由于其特殊的形音义组合结构,决定了其阅读眼动模型与字母阅读行为的差异。

字母阅读时眼球是可以聚焦单个字母位置的,从而进行对整个单词进行加工,而汉字就不存在整个问题。不过也有人借鉴字母阅读的模型,把汉字以部首为单元进行认知测试。<<ref "①">> 另外一个不同点就是字母阅读词与词之间是有空格存在的,这也决定了中文阅读眼球运动与字母阅读的不同。

不同研究者通过大量实验得出的结果证实:''中文阅读是基于“词”的阅读''。也就是说,词更有可能是汉语阅读的基本信息单元。支持这一观点的证据主要来自于以下几方面。

“''词优效应''”是指读者在复合词中识别汉字的速度快于在无意义汉字串中对相同汉字进行识别的速度。汉语读者在真词中搜索汉字位置的速度要显著快于在非词中搜索汉字位置的速度,表明汉语中的词是作为一个整体被加工的。

''“词频效应”''是指读者在阅读过程中对高频词的识别速度快于对低频词识别速度的现象。字频是否在汉语词汇识别中起作用受整词词频影响较大。

''“预测性效应”''是指,与低预测性词相比,高预测性词更容易被识别的现象。具体表现为,读者识别高预测性词所需的首次注视时间、凝视时间和总注视时间显著短于低预测性词,且跳读的概率更大。

“词边界效应”是指在汉语文本阅读中,通过加入视觉词边界信息(如词间空格)来促进读者阅读的现象。词边界信息的促进作用不仅表现在汉语词汇识别的过程中,同时还体现在汉语读者对新词的学习中。

''偏向注视位置(preferred viewing location,PVL)效应''
指无论是阅读由左到右排列的文本(如英语),还是阅读由右到左排列的文本(如希伯来语),读者都倾向于将首次注视点落在单词的中心和开头之间的位置,约在单词开头1/4处。汉语读者注视词中心还是词首取决于当前注视词与副中央凹处  
<<ref "②">> 的词能否成功切分。这表明汉语阅读是基于词的阅读,但读者采取什么样的注视策略则与副中央凹的词切分相关。

''“心理词”''(psychological word)的概念,它是汉语阅读中相对较大的基本语义单位。例如,多数读者倾向于把“老朋友”看作是一个语义加工单元,但实际上“老朋友”是由“老”和“朋友”两个词汇词组合而成的短语,“老朋友”是个心理词。心理词单独呈现和在句子阅读中时都存在加工优势。

如是我闻。

读写的基础和升华是用好“词”。要速读、跳读和一目十行,先把文章中出现的高频词在脑中进行熟练加工、再进一步训练成自己的心理词,使视野区域的词更容易被划分,提高预测性效应,从而眼球的偏向注视位置尽量后移。写出一篇朗朗上口的文章,尽量不要使用长句式,短句式尽量由熟词和字组成,短句式可以造成词边界效应(标点符号相当于字母阅读中的空格,一般中文里面是被跳读的)便于分词,熟字词可以缩小认知加工时间。

写到此,如醍醐灌顶,一下子明白了为何[[素心素地素文方是大文章]],为何越是大家作品越是素朴而有味。以上的分析和对阅读行为的结构化,实际上为分析“好文之所以为好文”提供了理论基础。

2018年04月17日周二下午10:52:47

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "汉字的内部结构关系有三种:空间关系、方位关系和配合关系。彭瑞祥和张武田(1984)研究了字的类型是如何影响汉字的特征提取的。在快速、低对比条件下呈现不同类型的汉字,呈现时间分别为3ms、17ms、33ms、67ms。字的黑白对比为0.003。字的类型为:左右分隔型、上下分隔型和整体型。要求被试在刺激呈现后,立即正确写出所看到的东西,如笔画、部首或整个字。结果发现,左右分隔字的累积再认率最高;整体字结构较紧密,不利于辨认,在呈现时间为17ms和33ms时特别明显。">>

<<footnotes "②" "所谓副中央凹—中央凹效应(parafoveal-on-foveal effect),指副中央凹预视效应获得的信息对中央凹的加工产生的即时影响。">>
<span title="为生命而阅读"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[为生命而阅读]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
民国大师系列看完了。

这个系列挺杂的,是民国时期一些期刊和报纸专栏文章的合集,里面不乏大师作品,如鲁迅、郭沫若、老舍、钱钟书以及丰子恺等。作品类型基本上是杂文和散文为主,[[雅记清词写流韵]]和[[民风野趣幽然醉]]属于散文,[[旧事新知风雨声]]和[[书卷多情似故人]]属于杂文类型。

说起散文,已经有许多年没有读过散文了,至少是从大学毕业之日起。这个时代可能不适合读散文,这是自己的悲哀,也可能是这个时代的悲哀。一个人需要一点闲暇整理自己的心绪,让思想随着风,随着烟,随着旧事的梦,随着音乐的畅想,自由的飞翔,或者找一个素地栖息。一个时代需要一份温情,让孤独的人可以自由吟唱,让受伤的人可以舔舐伤口,让陌生人可以相视一笑,让怨恨可以减轻痛楚。而现实生活中散文缺席了很久,直到再次拿起,方知暌违之情,心底里的一份缺失的温柔。

如果诗是远方,那散文就是远方之途上那些无名的小花。

2018年04月03日周二下午10:32:25
<$list filter="[field:book_title[乡下人的悲歌]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:book_title[书卷多情似故人]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="书生之见:子东时间"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[书生之见:子东时间]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[书籍的秩序]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
真够折腾的!从以Tag为图书识别,到昨晚添加的[[Library]]插件 $:/plugins/inmysocks/LibraryTracker,不断的折腾,也许逻辑比之前清晰了一点,也省了不少事:

* 添加书目即生产书目的相关笔记和书相关的参数:''Author、Series、Genre、 Location、Tags'',见[[Library Tracker Settings]];
*管理起来更加便捷了,[[已读]] [[正读]] [[想读]],一目了然;
*关于书的信息和变量调用起来少了许多弯路:不再以Tag为唯一识别,而是给予`tiddler`的`field`,如:

```
<$list filter="[field:book_title[青泥莲花记]] -[title[Manage Books]]+[!sort[created]]">
```
*阅读管理更加便利了,想读书自动进入[[Task]];

@@color:#fbba42;2017年12月01日 下午 11:57:35@@

昨晚把weekly去掉了,主要是因为:

# weekly和daily交叉重复太多,而且内容重复调用;
#阅读起来并不方便,陷入逻辑陷阱。
@@color:#fbba42;2017年12月03日下午03:56:01@@
过年到现在基本上每晚都会翻看王国维的《[[一个人的书房]]》,对王大师多少有点了解,尤其佩服其国学造诣。这也是他迷茫和徘徊后的结果,他曾经说“余之性质,欲为哲学家则感情苦多,而知力苦寡;欲为诗人,则又苦感情寡而理性多。诗歌乎?哲学乎?他日以何者终吾身,所不敢知,抑在二者之间乎?”王对自己在古诗词方面的评价满满:

<<<
余之于词,虽所作尚不及百阕,然自南宋以后,除一二人外,尚未有能及余者,则平日之所自信也。
<<<

可以说,[[王之后再无国学大师|2018年02月18日周日上午12:22:48]]。而今日在《跟大师读经典小品》之[[书卷多情似故人]]了解到,王大师原来是以投颐和园昆明湖的形式告别这个世界。

1927年6月2日,王国维同朋友借了五块钱,雇人力车至北京颐和园,于园中昆明湖鱼藻轩自沉。从其遗体衣袋中寻出一封遗书,封面上书写着:“送西院十八号王贞明先生收”,遗书内容如下:

<<<
五十之年,只欠一死。经此事变,义无再辱。我死后当草草棺殓,即行藁葬于清华茔地。汝等不能南归,亦可暂移城内居住。汝兄亦不必奔丧,因道路不通,渠又不曾出门故也。书籍可托陈吴二先生处理。家人自有人料理,必不至于不能南归。我虽无财产分文遗汝等,然苟谨慎勤俭,亦必不至饿死也。
<<<

王国维为何自戕?“五十之年,只欠一死。”难道是“老而不死是为贼”?而王的学术成就在五十已臻成熟,颇有建树,非苟且偷生之辈,“为贼”是不成立的。那为什么自溺?,一般学者认为的原因有:“殉北洋说”、“反共及痛恨北伐说”、“逼债说”、“性格悲剧说”、“文化衰落说”。而这一切都无法盖棺论定。

[[书卷多情似故人]]载有几副对王国维的挽联,也可见一斑:


<<<
民国十六年阴历五月初三日,海宁王国维投昆明湖自杀,十七日在全浙会馆开追悼会,吊者甚众,挽词多不得体,惟梁启超一联云:“其学以通方知类为宗,不仅奇字译鞮创通龟契;一死明行已有耻之义,莫将凡情恩怨猜疑鹓雏。”语最中肯。罗振玉联云:“故人慷慨多奇节;书卷消磨绝可怜。”亦可谓知言。盖王氏一生博学深思,情理透彻,决非一般无聊遗老之所怀抱,如柯劭忞联云:“臣义不再辱;天鉴此孤忠。”真相去远矣。
<<<

[[补:五十之年,只欠一死]]:

{{补:五十之年,只欠一死}}
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[人是一根会思考的芦苇]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[人生]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[人类的群星闪耀时]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[人类群星闪耀时]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''先看一个通俗的例子:''

```
例如,你们家里有个账本,让你来记账。在以前,就是爸爸妈妈把工资交给你,让你记到账本上。中间万一你贪吃,想买点好吃的,可能账本上的记录会少十几块,然后你想买个手机,账本上就少记录几千块。但有了分布式账本后,这些问题就不会有了,因为你在记账,你爸爸也在记账,你妈妈也在记账,他们都能看到总账,你不能改,爸爸妈妈也不能改,这样想买烟抽的爸爸和想贪吃的你都没办法啦。
```

上面提到的分布式账本,就是区块链的而核心。

区块链是比特币所使用的底层技术,后来被抽离出来作为系统层面的开源技术或者框架,它本质是一个互相验证的去中心化的公开分布式记账系统。这个系统所做的事情,就是记录所有账户发生的所有交易。每个账号的每笔数额变化都会被记录在全网总账本中。其本身是一系列使用密码学而产生的互相关联的数据块,每一个数据块中包含了多条经比特币的网络交易有效确认的信息。


''区块链三大特点:''

* 是一个分布式账本
* 是一个可编程性开源的技术
* 是一个基于共识在机器之间建立信任并完成信用创造。
* 是一种去中心化的自组织(个人观点)<<ref "[1]">>。

《经济学人》杂志这样写道:

<<<
区块链是一台创造信任的机器,可以说区块链最核心的问题就是解决信用共识的问题。
<<<

区块链发展阶段:

*比特币阶段
*区块链+金融阶段 (2017年)
*区块链+其它行业(2018年)
*区块链+社会(未来)<<footnote "[2]" "个人观点">>

区块链技术其核心特点之一就是其去中心化的自组织,所以其社会意义比技术意义更值得研究。接下来我试图从技术哲学角度探究一下其意义。

''非常详细的解说视频:比特币的原理''

<iframe width="560" height="315" src="https://www.youtube.com/embed/obRzfcvMshM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

//2018年01月14日 周日下午 03:56:21//

-- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "自组织,是一系统内部组织化的过程,通常是一开放系统,在没有外部来源引导或管理之下会自行增加其复杂性。 自组织是从最初的无序系统中各部分之间的局部相互作用,产生某种全局有序或协调的形式的一种过程。这种过程是自发产生的,它不由任何中介或系统内部或外部的子系统所主导或控制。">>
在《文明的进程》中,埃利亚斯首先从社会起源的角度,对法国人所说的“文明”(civilization)与德国人所谓的“文化”(kultur)做了考察和区分。他指出,由于“文明”和“文化”都承载着十分广泛的价值意蕴,常被人们视为近义词。而实际上这两个差不多同时在十八世纪中叶成形的现代概念,有着相当不同的历史起源,更有十分显著的意义差别。文明源自法语中的“礼仪”(civilité),十六世纪的廷臣们用它来描述优雅高贵的行为举止,以区别于“粗俗的”中世纪贵族将就使用的“礼貌”(courtoisie)。到了十九世纪,文明已经成为一个具有普遍功能的概念,西方人用它来涵盖西方社会在整体上高于其他社会的诸多性质。除了行为方式,还泛指物质生活、技术含量、科学知识,乃至世界观水平等等。

但是德语中的“文化”不一样,它是作为“文明”的对立面发展起来。在德国人那里,文明是一个低于文化的次等观念,就像法国式的礼仪规范,充满了过度矫饰、繁文缛节和道德虚伪。而文化才是自然的、真诚的、浪漫的、无拘无束的、情感充沛的,它标志着德意志民族的自我意识与独特精神。

可见文明意味着普遍性,文化体现的是独特性。不过可以从埃利亚斯的分析里看出来,这种独特性其实类似一种对外界压力产生的应激反应。它使得德国人不仅对文明带有明显的误解和敌意,甚至到了以粗鲁、庸俗和野蛮的行为举止而骄傲的程度。在进一步的分析中埃利亚斯认为,尽管到了十九世纪西方人好像在随心所欲地使用“文明”这个概念,其实它在发展中一直没有偏离它的原初含义。从根本上讲,文明不是一个静态的结果,而是文明化的过程。它的核心就是“受控”——通过“习惯”(habitus)的养成达成对情感和行为的自我控制。
“habitus”这个词有时候也被翻译成“惯习”、“生存心态”、“个人特性”等等,好像很难懂,其实未必。它就是生物学家常讲的习性,即“第二天性”(second nature),指的是那些并非天生固有,却在经验中得以强化的行为方式或情感倾向。人类习性的特别之处仅在于,多数情况下它们不是在自然环境中习得的,而是在社会环境中塑造的。

埃利亚斯发现,表面上看,一个习惯的形成未必是有计划的——它既不是个别的人,也不是个别的团体高瞻远瞩精心策划的产物。但是从整体与长期的角度看,众多习惯的形成与改变并非没有目的和方向。实际上,这些习惯的变迁朝着一个大致的趋势,那就是使得一个人的情感和行为更稳定、更均衡、更可预期。一句话,就是更可控制。

在大趋势之下,是各种要素的交互作用。行为塑造情感,情感反过来塑造行为。外部的强制对人的行为和情感加以约束,而一旦强制内化成为习惯,它又会对外部环境做出主动的调节。在这个你来我往反反复复的过程中,个人与个人之间,个人与社会之间,相互依赖的机制得以细化和强化。越来越多的人被迫或主动地更加频繁地关注越来越多的人,在埃利亚斯看来,这就是文明化的本质。这一进程不乏反复、曲折和倒退,不过总体而言,它意味着暴力的减少,秩序的稳定。

为了解释这一交互并行的文明化进程,埃利亚斯罗列了大量的历史细节。他运用卓越的技巧,将宏观的历史与微观的个体结合起来,从两个层次上细腻解读了文明的发生。一个层次是个体的社会化,比如儿童怎么通过受控,习得特定社会的情感表达与行为准则;另一个层次是对情感以及行为的社会习惯进行长期考察,以此来识别一个特定文明的主要特征。

例如埃利亚斯注意到,在中世纪的饮食习惯里,人们在同一个盆子里用手抓肉吃,用同一个锅或盘子喝汤乃是稀松平常的事。贪图享乐的王公贵族拥有昂贵的珠宝和华丽的餐具,却可能只有一把叉子。十一世纪,一位希腊公主嫁给威尼斯王国的元首,用“有两个齿的金属长柄叉”将食物送进嘴里,在当时竟然是一个特大的丑闻。这些资料都说明,那个时代的社会情感与行为方式处于控制较弱的水平。直到十六世纪,法国国王亨利三世用威尼斯带回来的叉子就餐,他的侍从还被廷臣嘲笑。不过有趣的是,正是在十六世纪那个过渡阶段,“礼貌”(courtoisie)在法国上流社会逐渐废止,而“礼仪”(civilité)使用得愈加频繁,最终在十七世纪的西欧取得优势。

儿童的教育也反映出那一时期文明化的特征。譬如那时候有一本叫《男孩的礼貌教育》的礼仪手册,主要内容还保留着中世纪的传统习俗:应该用三个手指抓肉吃,别像馋鬼或饿狼那样扑向食物等等。可是另一些内容却表明,相较于十四至十五世纪的宫廷礼仪,社会习惯已经更加细腻。以往,啃过的骨头不可放回公用的盆子,不能用桌布擤鼻涕,不要把痰吐到餐桌对面去等等,这些还是必要的明文规定。而到了《男孩的礼貌教育》里,盘子端上来不要急于伸手取食以免烫伤,与有身份的人同桌进餐要脱帽整理头发等等,更加具体细致的规矩多了起来。手册中有一句话特别能说明埃利亚斯的观点:“最好稍等片刻,等这个男孩慢慢习惯于控制自己的情感。”
从启蒙时代到二十世纪上半叶,出现过多种文明理论。经济因素、阶级斗争、生产力发展、社会结构等等,都被用来理解这一进程。但是没有哪一个理论像埃利亚斯的文明论那样,如此强调身心一致。这显然与埃利亚斯的医学基础分不开。他很早就意识到,人有着黑猩猩难以比拟的细微而丰富的面部表情。而由肌肉和神经控制的表情,与情感和行为都绝非单向的因果关系。读者从这一点上去理解《文明的进程》无疑是一条捷径。

福柯(Michel Foucault)、布迪厄(Pierre Bourdieu)、戈夫曼(Erving Goffman)等等,不少社会学名家都从埃利亚斯那里汲取营养,这并不奇怪。令人惊讶的是,科学家的研究也深受埃利亚斯启发。随着艾克曼(Paul Ekman)、特纳(Jonathan H. Turner)等人的研究,他在二十世纪早期开辟的方向正成为心理学家、神经科学家和语言学家的共识。如今人们终于意识到,情感不仅是个体的自我评估体系,还是社会联系的重要工具——它们是“身体与社会的语言”。

像埃利亚斯分析的那样,科学家逐步证实,在社会的压力下,恐惧、愤怒、高兴和悲伤等基本情感能够像颜料盒中的原色,按照不同的比例混合,生成次级情感。而次级情感还可以再度调和,生成好奇、希望、感激、自责、内疚、骄傲等一系列有利于社会化的复杂情感,并合成含有沟通意图的面部表情和身体姿势,它们在塑造自我和社会方面具有极其重大的意义。而这些东西,往往需要通过习惯来养成。

在心理学家斯蒂芬·平克(Steven Pinker)的新书《人性中更好的天使》里,埃利亚斯乃是当之无愧的中心人物。在那本书中,平克以埃利亚斯的理论为基础,运用大量的统计数据证实,在一万年乃至更大的时间跨度里,外部约束与自我约束的确使情感越来越细化的人类更少暴力,更有秩序了。如今,越来越多的证据支持这一观点:埃利亚斯的文明论不仅在二十世纪下半叶取得了社会学的经典地位,而且必将在二十一世纪的各个学科领域发挥更大的影响。

其实,“身心一致”不仅是文明论的概括,就像我们看到的,埃利亚斯的人生也可以以此来评价。在一个古老的西方传说中,一位骑士在寒夜里寻找美丽的博登湖(Bodensee),却在黑暗中迷了路。第二天浓雾消散,他发现自己身在一个小村庄中。于是他问村民,博登湖在哪里?村里人说,尊敬的先生,你肯定在昨夜里已经踏过了博登湖。只不过,那湖面上结了一层薄薄的冰。骑士吓得魂飞魄散,从马上栽下一命呜呼。回顾自己漫长的一生,埃利亚斯将自己也比喻为骑士,只是结局要幸运得多。他说:“我从不计划自己的生活。我就像博登湖上的骑士那样大胆前行,从不害怕会掉到冰冻的湖面之下。这就是我对生活最基本的感觉。”

也许埃利亚斯说得对,也许未必。他曾经说他“追随着自己的心灵”,可是至少从他曲折的人生来看,他的心灵从未放任不羁。在遗著《莫扎特的成败》里,埃利亚斯悄悄地将自己的人生与莫扎特做了一个对比。一个年少成名,一个郁郁不得志;一个天纵之才,一个大器晚成;一个桀骜不驯,一个隐忍克制;一个生活在承平年代,一个挣扎在乱世当中;一个英年早逝,一个颐养耄耋。在这一系列隐藏的对比中,埃利亚斯其实婉转地承认,他的人生是谨慎的,充满了自我约束的印记。实际上,如果他不是以身心一致的方式前行,危机四伏的博登湖怎能踏过?

从这个意义上看,在文明的进程之中,人类何尝不是冰湖上的骑士呢?//(冰湖上的骑士  西闪)//

2018年05月16日周三上午01:10:47

<<<
几上,有针,有线,有尺,有剪刀。我母亲,坐几前,取针穿线,为我缝衣。
<<<

上面是民国时期小学语文课本《开明国文讲义》 <<footnote
 "①" "《开明国文讲义》,由夏丐尊、叶圣陶、宋云彬、陈望道合编,立足于多阅读而为之,古今中外脍炙人口之名篇佳作(近150篇)尽入囊中;其讲解、其点评言简意赅,可谓画龙点睛,绝不来什么段落大意、中心思想一类的八股货。是中国中小学语文教材编写史上的传世佳作。>>上的内容。看后心里安静喜悦,情不自禁。我之前一直所念叨的[[素心素地素文|素心素地素文方是大文章]]不就是这样的吗。

<<imageSlider  [[https://cl.ly/qzSc/download/maimingyuwen1.jpg]]    "第二十二课">>

素心,即本色;素地,即真挚情感;素文,即无任何润饰。此即为“''心头一声''”,如“悠然见南山”,“举头见明月”,“衣沾不足惜”,念出便是天下第一妙文。

<<<
小窗外,有梅树,方开花。我欲折之,干大枝高,手攀不及。母谓我曰:“此树乃十余年前汝父所种,比汝大数岁,故甚高也。”《老梅树》
<<<
<<imageSlider  [[https://cl.ly/r0Gb/download/minguoyuwen2.jpg]]    "老梅树">>
亲情在记忆中幽幽芳菲。

<<<
菊花盛开,清香四溢,其瓣如丝如瓜,其色或黄或白或赭或红,种类最多,性耐寒。严霜既降,百花零落,惟菊独盛。
<<<

<<imageSlider  [[https://cl.ly/qzvt/download/minguoyuwen3.jpg]]    "菊">>

境高意远,落落大方。

在萌嫩素简的心地上只有种上真善美的种子,才会开出生命最美的花朵。而逆天道自然而行,用意识流污染的心地,只能长出恶之花,丑之果。

今不如昔,人心不古。

2018年04月19日周四下午02:39:51

都已经躺下了,突然想起中学课本上鲁迅的一句话 ''“在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。” ''平铺直叙,确让我至今难忘。

2018年04月20日周五上午01:12:54 
这是查建英主编的《八十年代访谈录》里采访刘奋斗的一句话:

<<<
中国足球队的水平其实也正是我们今天中国文化界、思想界、艺术界的水平。在这些方面我们并没有比足球表现得好了多少,我们大家都是一批机会主义者。譬如搞电影的人,永远摸着石头过河,没有一个很坚定的信仰和热情在后面,总是做了一件事算一件事,慢慢一步一步改,一步一步来。他认为这样做下去不会有好结果,但是为什么大家瞧不起中国足球,却没有很瞧不起中国的文化艺术呢?那是因为“中国有句老话‘文无第一、武无第二’,整个行业容易被遮羞,不像足球似的那么难看,立刻见真章”。
<<<

《八十年代访谈录》首版在2006年。如今,12年即逝,关于中国足球的现状依然没有什么长进。俄罗斯世界杯比赛正酣,有人戏谑世界杯是“美中不足”,世界经济体第一的美国对足球不热衷,经济体第二的中国是想热衷而不得。回到上面那句话,“中国足球队的水平其实也正是我们今天中国文化界、思想界、艺术界的水平。”这句话在12年后的今天来看依然成立,现今中国除了经济总量(仅是总量)在数字上的攀高,思想文化方面毫不谦虚的保持着和足球一样体面的水平。前一段在读《私人阅读史》和《我书架上的神明》,这两本书涵盖从上世纪40年代-到80年代中国近二百多位知识分子的私人阅读史,加上查建英《八十年代访谈录》,我简单整理和梳理了一个书单,一份思想演变脉络。从中不难看出,50、60年代朴素的爱国主义和民族主义,70年代朴素的理想主义、虚无主义,80年代新思想启蒙思潮、理想主义,90年代之后许多原始和朴素的东西开始被瓦解甚至荡然无存,取而代之的是拜金主义、实用主义和犬儒主义以及狭隘的民族主义和网络暴力。虽然近些年新儒教主义有抬头的迹象,但尚存在提倡国学的实用主义层面(详情见读书笔记中)。这些话可能触及一部分人的敏感神经,会说我们现今有“新四大发明”,有Bulinbulin的高铁等等。我只想说,这些只是技术上的进步,绝非科学(见的进步),要不然美国也不会卡中国的脖子了。

上面拉杂一大堆,我只想从另外一个角度解释中国足球为何沦落到今天现状的原因。从社会的基本面 --- 思想层面 --- 思考问题,可能会看出许端倪来。

开什么样的思想之花,结什么样的果!

2018年06月27日周三下午02:48:40
《零ZEЯRO:世界符号大全》是日本著名的艺术指导/平面与书籍设计师松田行正的代表作之一。

<<imageSlider  [[http://p2.cdn.img9.top/ipfs/QmZ8a4Zoy9aqhRcdKVDq7cufUbWNo9gh6J26SjMfwT2xXq?2.jpg]]    "《零ZEЯRO:世界符号大全》封面">>


这是一本黑色的书,连三个切口都刷了黑漆。正面不着一字的书衣也是黑色特种纸,两边是两张切割出来的脸部曲线,封面上只有九个小孔。这九个小孔是凡尔纳的小说《桑道夫伯爵》中桑道夫伯爵解读暗号的模型纸,配合硬封上的文字阵列,正常包裹时显示出“ZEЯRO松田行正”,将书衣顺时钟旋转90度就变成“ZARRATHUS”,再转90度会出现“TRRASIGNE”,再转90度则会出现“ASINTOERR”。这36个字母去掉作者名,就变成ZEЯRO, ZARRATHUSTRRA, SIGNE, A SIN TO ERR。九个小孔的排列方式来自杜尚的《新娘,甚至被光棍们剥光了衣服=通称大玻璃》中的“九个射击的痕迹”,喜欢玩双关语的杜尚用射击的洞比喻射精。作者解说书名的含义是:''从零(ZERO)出发,逐渐偏离(ERROR),进入记号的世界。''

书衣的背面是一株枝繁叶茂的文字树。书中列出的记号群只是根据形状的趣味性来选择,也有很多记号是已经超越了沟通途径的复杂形状。有很多文字系统因为形状和文法太过复杂而无法流通,自然消失,也有一些像神代文字那般怪异的文字系统。

2018年05月19日周六下午02:04:05
读完[[我书架上的神明]],使我对读书这件事情认识的更加清晰了。虽然此书上的社会翘楚所列书目多为阳春白雪之书,虽然大部分调查对象对社会上一些书都抱有嗤之以鼻的不屑,而对于读书这件事我们应该报以虔诚和直率。而有些人的读书观我使不认同的。

读书的作用是什么?读书的目的不就是让我们的人生深度和广度有所延展,使我们对世界有所敬畏和尊敬,使我们有更多元的思想和更大包容性的胸怀,让我们有站的更高看的更远,从而仰望慈悲,俯从大众吗。当思考到这些时,我为我之前的一些行为而感到羞愧和自责,我之前总是看不起或者鄙视(至少心里暗自这么想的)哪些读通俗小说、读心灵鸡汤、读成功学、读故事会或者读网络小说的人,是典型的人文沙文主义。我不应该持有鄙夷,我应该更多给与的时同情和关怀(突然我感觉这个表达也是欠妥的,是不对的,似乎还是些许怜悯之意),如果他们和[[我书架上的神明]]书上的一些作者比,他们只是缺少了一些机会,生在一个没有机会或者没有能力受到良好指导和教育的家庭而已。这种读书行为没什么错,也不是不道德和低俗,而仅仅可能只是一种不幸。如果要做到知行合一,我想应该像左宗棠那副对联说的那样去做:

<<<
发上等愿,结中等缘,享下等福;

择高处立,就平处坐,向宽处行。
<<<


//2018年03月01日周四下午10:53:23//
<$list filter="[field:book_title[伊斯坦布尔:面纱下的七丘之城]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[作为意志和表象的世界]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
@@color:gray;
@@float:left;
@@font-size:500%;
&#13297;&#13160;
@@ 

<<<@@background-color:yellow;
你觉得自己很了解自己,但其实你错了。@@
<<<

这是人类的通病。除了后天性自负造成对自己的误判外,通常都是大脑思维的系统性错误,即系统1造成的。

当我们看到一个字、一件事或物,系统1首先搜索记忆库中的相关储存,然后进行输出。而调用记忆过程中,如果算是算法的话,有一种搜索算法就是“联想”,联想是人类思维的一种神奇力量。

联想思维活动通常是系统1的特性,大多数联想是无意识的,只有少数的联想活动是有意识的组织,而且联想活动是连贯性的。

当你看到“草原“一词,会联想到“绿色”二字。这种思维活动被称之为''启动效应'',启发联想的效应。联想不仅是思想活动连贯性,有时候也会把这种联想结果直接体验在身体的行动上,例如微笑、身体动作等。

在一项实验中,心理学家约翰·巴奇(John Bargh)和他的同事们让纽约大学的数位学生从一个包含5个单词的词组中(例如“发现、他、它、黄色的、马上”)挑出4个单词来重组句子。其中一个小组的学生重组的句子中有一半都含有与老年人相关的词汇,例如佛罗里达州、健忘的、秃顶的、灰白的或者满脸皱纹的。当他们完成这项任务时,又被叫到大厅另一头的办公室里去参加另一个实验。从大厅的一头走到另一头是这次实验的关键所在。研究者悄悄地测量了他们所用的时间。正如巴奇预料的那样,那些以老年为主题造句子的年轻人比其他人走得要慢得多。这个实验后来成了经典案例。这种效应被称之为''佛罗里达效应''。

上面的案例是联想影响身体行为。反过来,一些常见的身体行为同样也会影响思维活动,例如这个案例:在一项实验中,受试者按照要求用新耳机听一些信息。他们被告知这项实验的目的是检测音频设备的质量,研究人员告诉他们要不断地摇晃脑袋,以检查设备是否有声音失真的问题,其中一半受试者要上下点头,而另一半则要左右摇头。他们听到的内容是电台的社论。那些点头(表示同意的动作)的受试者往往易于接受他们听到的信息,而那些摇头的受试者则易于否定那些信息。要强调的是,受试者并没有意识到上述问题,他们只是习惯性地将否定或接受的态度与其常用的身体语言联系起来而已。


<<<
由此可见,老话讲“不管你怎么想的,都得心平气和”,这真是条很好的建议,只有真正做到心平气和,你才可能有回报。
<<<

这些启动效应都来自系统1,这些现象发生时我们根本意识步到,这是有系统1运行特性决定的。而这些系统1的启动效应有组织、连贯性的出现,就会变成人的信念,是做出选择和展开行动的动力源泉。也就是说,系统1输出了我们对世界的大部分认知模式。人脑活动的自组织,自我修复、自我纠偏的特性决定了大部分快速直觉性判断是准确的,但是不可避免的会有一些系统性错误。

例如这些启动效应:

* 脑子里一直存在钱这一概念的人会滋生个人主义:不愿和他人在一起,不愿依赖他人,也不愿接受他人的请求。<<footnote [1] "心理学家凯瑟琳·沃斯(Kathleen Vohs)的研究结果">>

* 使人牢记“人终将一死”这一说法能让独裁的主张更得人心,因为在人们恐惧死亡的情况下,独裁的主张会让人心安。

* 想到背后中伤某位同事就会使人更想去买香皂、消毒剂或清洁剂,而不是去买电池、果汁或者糖果。当人们感觉自己的心灵受到了玷污,往往也会引发他们清洗自己身体的想法,这种冲动被称为“麦克白效应”。

*  在一个专制国家中,到处挂着领袖的肖像不仅能向你传达“老大哥在看着你”的感觉,还会使你逐渐丧失自主的思想和独立的行为能力。<<footnote [2] "语出乔治·奥威尔所著的《1984》(1984: Big Brother Is Watching You)。《1984》是奥威尔的传世之作,堪称世界文坛最著名的反乌托邦、反极权的政治讽喻小说。他在小说中创造的“老大哥”、“双重思想”、“新话”等词汇都已被收入权威的英语词典。“老大哥”其实是无处不在的权力的象征。——译者注">>

* “这些人都穿着刻板的制服,看到他们时我们的大脑中是不会有什么创造性想法的。”

*“我让自己微笑,这样做我也的确感觉好多了!”

''结论:''

* 主体性:我们身体里面住着一个完全陌生的人控制着我们(系统1),学者了解它和他交朋友,尽量避免错误的输出;
* 思维到行为-启发联想:尽量让系统2参与,避免系统性错误;
* 控制好启发点:保持好的周围环境,影响心情和思维;
* 行为影响思维:保持好的习惯,影响思维正确的输出;
* 心情影响思维:保持好心情避免错误决定。

//2018年01月18日周四下午04:10:34//
<$list filter="[field:book_title[侠隐]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
!! 结构
<<textSliderNoButton "''[[信息技术和互联网]]''" "*梅特卡夫定律(Metcalfe's law)
">>

返回[[思维模型|Thinking Models]]

!!! 梅特卡夫定律

[img width=80% 
 [https://one.rizi.me/Photos/webphoto/Metcalfe's law.png]]

梅特卡夫定律,即网络效应,指当一个产品的用户数越多,该产品对用户的价值就越大,这反过来又能吸引更多用户使用该产品。同时,该产品的价值跟用户数的增长成二次方关系。产品的价值等于用户数量的平方。
刚从[[蒋介石的岁月|蒋介石与现代中国的奋斗]]中出来,接着走进了鲁迅的人生。[[文学的群星闪耀时-国内篇]]开篇便为鲁迅(鲁迅之疑),接着是萧红(萧红:一个漂泊的灵魂)、老舍(人民艺术家老舍)、莫言(解释莫言)和张贤亮(一个作家的“野蛮生长")。除了对萧红和老舍毫无兴趣之外,对鲁迅和莫言则是读的重点。一个故去,成了符号;一个活着,成为骄傲。

我对鲁迅的了解,基本上停留在从中学课本学到的有限知识的残留。三味书屋、闰土、呐喊、在仙台、阿Q和热血馒头,这些词汇之于我就代表了鲁迅。作为一个时代代表性人物,应该了解,而我确由于少年时在课堂上被老师强迫性要求对课本人物进行时代意义总结和积极精神归纳而由衷的排斥和反感。说实话,那时候我也弄不懂哪些大时代背景下符号人物的积极意义和时代号召作用,留下的印象只是在课堂上生生被老师烙上去的。而今日再读,尤其是纵览鲁迅生平,方知鲁迅作品何来与何去。也算是自己真正做完了少年时课堂上的一道作业。

2018年02月05日周一上午12:48:27

''下载地址:''

[[《文学的群星闪耀时-国内篇》|https://www.asuswebstorage.com/navigate/s/395E4B3DF9F04D4BBFF9049FBD435F5F4]](mobi格式)
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[偷书人]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="偷书贼"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=30%></a>
</span>

<$list filter="[field:book_title[偷书贼]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
增加了[[Code Stylesheet]]样式,从此代码引用快变成嘿嘿的了。


```
嘿嘿
```
2018年01月13日 周六下午 04:48:02
@@.note
''Keywords:'' {{!!keywords}}
@@

* 定律一:如果一个年高德劭的杰出科学家说,某件事情是可能的,那他几乎就是正确的;但如果他说,某件事情是不可能的,那他很可能是错误的;
* 定律二:要发现某件事情是否可能的界限,唯一的途径是跨越这个界限,从可能跑到不可能中去;
* 定律三:在任何一项足够先进的技术和魔法之间,我们无法作出区分。

以上是''克拉克基本定律''(英语:Clarke's three laws),是英国著名科幻作家亚瑟·查理斯·克拉克积累有关科学文化方面的经验提出的。

这个定律很有意思,不仅是一个认知科学问题,也是科技哲学问题。

定律一涉及经验论和概率两方面问题。“年高德劭的杰出科学家”的先决条件说明了经验论的必备条件;后半部分是在认知边界作出的判断,所以概率要低。

定律二是正确的废话。

定律三是揭示了事物发展的规律。足够先进说明事物的复杂性或处在认知盲区,凡事处在认知盲区的事物都不能接近事物的本质,即事物本质外披着一层神秘外衣。同理,人类对人之大脑的认知程度决定了宗教存在时间的长度。

//2019年04月18日周四下午05:39:17//


<<<
"任何足够先进的外星文明都与上帝无异。"
<<<

这是美国科学家米歇尔·薛莫根据“克拉克基本定律”提出的一个猜想。算是克拉克衍生定律。

薛莫通过这个法则指出,任何与人类接触的外星智慧文明必将远远领先于人类,因为在演化时间尺度上,一个进化稍稍超前人类的外星智能物种所拥有的科技就可能领先人类数百万年。

//2019年04月28日周日下午01:30:56//
<$list filter="[field:book_title[八十年代访谈录]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
最近在做一个关于儿童阅读的互联网项目,有机会接触一些家长和孩子,也在一些场合演讲分享了一些自己对阅读历程和阅读感悟,大致总结一下。

!! 一个故事

<<<
20世纪初,在山东省平原县一家农户里,住着一位老人和他的小孙子。每天早上,老人都坐在桌边带着他的小娃,摇头晃脑地读着《诗经》《春秋》《三国志》等古籍,书声琅琅。

    一天,小孙子问道:“爷爷,我试着像你一样读《道德经》,但是不知怎么回事,我都猜不透那里面的意思。有时,我似乎理解了一丁点儿,可是一合上书,又立刻忘记了。这样读这些书有什么收获呢?”

    老人安静地将一些煤投入火炉,然后说道:“用这个装煤的篮子去河里打一篮子水回来。”孩子照做了,可是篮子里的水在他回来之前就已经漏完了。孩子一脸不解地望着满脸沧桑的爷爷。他对爷爷说道:“用篮子打水是不可能的。”

    “你真的认为一点儿用处都没有吗?”老人微笑着说,“你看看这篮子。”孩子看了看篮子,发现篮子已经十分干净,没有煤灰沾在竹条上面了。“孩子,这和你读古典书籍一样,你可能只记住了只言片语,它的意思或许你一点儿也不理解,但是,在你阅读的过程中,那些文字,以及你朗诵时的气氛,它会影响你,会净化你的心灵。”

    这位小孩记住了这句话。后来,他一直本着这样信念,终生与书籍为伴,不断进取,最终成为我国宗教学的泰斗——他就是已故国学大师任继愈先生。
<<<


!! 不要错过脑发育黄金期
哈佛大学儿童发展中心研究数据显示,儿童90%的脑发育在5岁之前完成。

美国心理学家布鲁姆则认为,如果把一个人长到17岁时达到的普通智力水平计为100%,那么从出生到4岁时他已经获得50%的智力,4-8岁又获得30%的智力,8岁到17岁只获得剩下的20%。

!! 种下一粒种子

就个人的经验,小时候偶然看到的一本书,书中的某种文字或场景,会深深的埋藏在记忆中,就像镌刻在脑子中磨之不去。这些记忆或成为未来的目标、方向或者动力,甚至成为塑造性格的关键性因素。

小时候看的小人书《悲惨世界》中有一个画面一直到现在清晰可见:一个瘦小羸弱的小女孩提着一桶水走在漆黑的大街上,面部充满苦难。

还有一本书应该是小学时候看到的,柯云路的小说《成功者》。这本书对我影响也很大,虽然故事细节我已经记不得了,但是我依然非常清晰的记得那是在一个冬日上午的校园里,我坐在墙根底下晒着太阳,默默的定下一个目标,长大后要成为一名记者或者是一个成功的商人。就是许多年前埋下的这粒种子,使我后来成为了一名记者,和在成为商人的路上行走。

这就是读书种子的力量。

!! 让读书发酵时间越长越好

上面我提到了“读书种子的力量”。如果把读书放在人生历程来看,无论从是读书的实用主义,还是从人生发展阶段(启蒙、成长、成型)角度,读书要趁早!我也是毕业多年后才开始对读书发起了猛攻,每年读书以百计,虽然什么时候开始读书都不晚,然而这句话总带着鸡汤味,每当我读到一本好书或者看到一则让我醍醐灌顶的故事,我总难免发出感叹:这他妈的为什么不让我早点遇到!

读书虽然是一辈子的事情,但是读书越早越好。如果把读比喻为酿酒的过程,那么就让这坛酒早点酝酿、发酵。从经济学来看这个行为,越早读到一本好书,这本书的后期边际效益越大,成本越低。

!! 不要错过人生的读书黄金时间

上面提到人生读书时间的问题。从人生成长自然和社会属性来分析,人的一生读书的黄金时间并不多,一旦错过有可能错过了一辈子。我说的黄金时间指的是能最大限度集中读书的时间。在我看来,人生黄金读书时间有三段:小学前、大学期间和老年。这里面大学期间尤为珍贵,我称之为“钻石读书时间”,因为这段时间无论是身体状态和智利水平都是最佳,读书环境也是最为便利。学前时光,读书虽然也很重要,然而基本上是亲子读书(这是另外一个话题:亲子阅读)模式,其受父母教育程度限制,尚不能自主阅读(亲自阅读)。老年阶段我们不要去管它了,强弩之末,唯是夕阳红。

这里补充一点,我所说的读书非读课本,读课本那叫学习,非真正的读书。
(待补)

2018年09月23日周日上午11:07:25
今天推荐两个视频//(需翻墙观看)// --- --- 也是我一直以来喜欢的一档节目,都和读书有关。一个是关于读书、选书和读书结果论;一个是关于读书、写作和细节的关系。两个都蛮有真货的。

''1. 《读什么书成什么人》''

<iframe width="560" height="315" src="https://www.youtube.com/embed/3YHIYBqb9kk" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

视频内容大意整理:


<<<
1. 机场书店

 2015年机场卖书达6亿人民币。主要是飞机延误的原因,乘客在机场滞留时间没增减十分钟,机场零售收入增加16%。
机场书店书的类型就是这个社会的封面,反映了这个社会的情绪,例如成功学、禅修、国学类。(人对失去的敏感,远远超过得到)(知识付费的对象:刚大学毕业,踏入职场没多久人群。)(成功类书最大的作用是不能让你成功,但是能让你兴奋起来,是一种兴奋剂。)

2. 书的价值高低

不同的书有不同的存在理由。
 一个人读书,如果读书使自己变得越来越有心理优越感,那么书就白读了。不要衣冠看人!

现在的社会,部分人已经丧失了读一本厚书的能力。

读厚书就是一种延迟满足。

3. 掌握一种新的语言(例如管理学、金融学等)可以增大自己能力,改变自己的思维模式。

4. 一部分畅销书只是换了一种语言或者说法来讲一些通识,从而看起来很有理。

 一个人到了一定年龄就会有功能性文盲症,很难接受新的东西,读书只是为了印证自己的想法和认识。

5. 一些功能性书,如教人如何做什么的书,很难看书学会。就像看书学会游泳是不可能的。

6. 很多书籍排行榜都是人为做出来的,并没有什么意义。

7. 读书能力要看读什么样的书,它未必就是一路增长的,甚至会退步的。没有了吸纳新知识的能力,没有了知识的敏感性。做学问和读书不能停,停则退步。

8. 目的性颤抖。做事目的性太强有可能反而更糟。
<<<


2. ''《魔鬼藏在细节里》''

<iframe width="560" height="315" src="https://www.youtube.com/embed/OO8bo_fpoQg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

细节需要自己深入体会。


2018年05月01日周二上午10:44:24 
<$list filter="[field:book_title[别逗了,费曼先生]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[动物的精神生活]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
前乔治亚理工大学研究技术史教授Melvin Kranzberg(已故)曾经在30年前提出过6条技术定理,虽然这些定律基于并验证与冷战时期发生的一系列技术变革和革新,但同样适用于今日之日新月异的技术突飞猛进的技术时代。

对此6条定律,我称之为科技哲学:

<<<
"""1. 技术不好也不坏;也不是中性的。
2. 发明是需求之母。
3. 技术都是成套出现,或大或小。
4. 虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。
5. 历史相关性普遍存在,但技术的历史相关性最强。
6. 技术是深受人为因素影响的一种活动。"""
<<<

而对今日炙手可热的区块链概念或者技术,如果用科技哲学的视角观察,也许是最好不过的“冷眼旁观”。

//Modified:2018年01月15日周一下午11:13:55//

区块链脱胎于中本聪发明的比特币,这个神秘的中本聪<<footnote [1] "没有人知道他是谁。">>发出的第一块区块被称为“创世纪区块”,有人用圣经里的这句话形容,“神说要有光,于是便有了光”。“光”,是相对于黑暗环境的。我不知道中本聪发明的本意是什么?但现实世界如果有人出来冒充说自己就是中本聪本人时<<footnote [2] "一位澳大利亚富豪曾经向世界声明说自己就是手里拥有几十万比特币身价几十亿的中本聪。">>,中本聪本人就会跳出来指证,“非也,人人都是中本聪!”<<footnote [3] "区块链的加密密匙是唯一的身份认证,创世纪区块链的密匙也只有中本聪本人拥有,所以一切李鬼都会现形。">>。中本聪所说的“人人都是中本聪”,就是区块链的核心特性之一:去中心化。这个星球中心化组织形式实在太长了,除了原始社会组织结构形态,漫长的历史无不处在中心化的组织框架统治之内。中心化,也就是集权化,被代表化;去中心化,我不知道这是不是民主的一种形式,按照现代文明的定义,区块化的这种形态应该不算是一种民主。 <<footnote [4] "民主,其本义是“人民的统治”,即“主权在民”,是一种现代的国家制度,国家权力由公民直接或间接行使。民主有时被称为“多数的统治”,与极权统治或独裁统治或寡头政治相对立。拉里·戴蒙德(Larry Diamond)指出,民主包括四个关键要素:(1)通过自由和公正的选举产生政府; (2)作为公民积极参与政治和公民生活; (3)保护所有公民的人权;(4)法律和程序同样适用于所有公民。">> 那么它应该是一种什么形态那?自组织?自组织结构形态目前只存在于小型化组织或实验化行为和柏拉图的《[[理想国]]》之中,当代人类文明事实上是无法承载“白蚁型”共识主动性自组织结构形态的。<<ref "[5]">> 所以,区块链在中国民间的大火大热,而政府的冷处理态度,这其实不是一个技术问题,是一个政治问题,是一场民主博弈,“究竟是少数代表多数(目前的法币政策)还是多数即正义(全球分布式共识网络,也即区块链)”的博弈。这正如开头引用Melvin Kranzberg教授的科技定律之一,''“虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。”''

//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

-- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[5]" "共识主动性是生物界的自组织或人类的直接民主。共识主动性发现于昆虫社区里的社会行为。例如,每个社区的蚂蚁是用特有分泌物的气味来进行交流的,一个蚂蚁如果发现了食物,它就会在回家的路上留下一路的气味,其他的蚂蚁就会沿着这条路线去找食物,并不断地加强气味。如果这里的食物被采集完了,没有蚂蚁再来,气味就会逐渐消散。这种气味让蚂蚁非常有效的达成共识,而且能产生超个体结构 - 教堂白蚁建造的蚁巢。还有,在大雨或影响蚂蚁社区生存环境突变的前夕,社区的蚂蚁们都要集中在一起,也就是“蚂蚁行雨”现象,进行同频共振,信息交流,然后分别行动,来改善生活环境,应对突发事件。">>

Weekly29:7.10~7.16

本周读书:《十一种孤独》 (理查德·耶茨作品系列)


<<<
世界上的最孤独,就是被世界遗忘,死一样的遗忘。
<<<

理查德·耶茨就是“被遗忘的最优秀的美国作家“(《泰晤士报》)。这个深受海明威影响,而投入生活的洪流体验生活,企图成为一名伟大的作家的二战士兵,被文学史长期进行着不公正的对待。投笔从戎,而文坛不顺,长期投稿被拒,又被老婆孩子弃之而去。唯一陪伴理查德·耶茨的只有酒和香烟。“他坐在租来的房间里,不停地抽烟,不停地咳嗽,不停地写,一篇又一篇,但都不成功,《纽约客》拒绝了他的每一篇投稿 。”

“生命的最后十年,他的健康状况极度恶化,由于肺结核,他呼吸困难,不停地咳嗽、气喘,但他仍抽烟抽得像在烧炉子,即使在最后一年里他得借助氧气面罩来呼吸时,抽烟也没中断过。喝酒是他又一个狂热的嗜好,美国文学史与酒的关系异乎寻常地密切(福克纳、菲茨杰拉德、哈特·克雷恩、海明威、伯里曼、契弗),但没有几个作家能像耶茨那样全身心投入酒精之中。他白天不喝酒,他要写作,一到晚上却总是烂醉如泥,不醒人事。”

这个美国底层出身的伟大作家,一生就这么孤单的用生命在写作,直到最后把身体完全透支,蜡烛成灰。
正如这个早期在美国文学史微不足道的小人物--理查德·耶茨-一样,他的作品里到处充满了小人物的悲天悯人和小人物的孤独。今天推荐的这本书《十一种孤独》,全书十一个短篇,十一个小人物,十一种孤独。孤独各异,殊途同归。也如他本人所说的:“''如果说我的作品有一个主题,我怀疑这个主题并不复杂,那就是绝大多数人都生活在一种无法逃脱的孤独中,他们的悲剧也在于此。”''

芸芸众生,各有孤独,理查德·耶茨用一生的笔墨书写着如他一样的小人物的悲剧人生。
<$list filter="[field:book_title[博尔赫斯短篇小说集]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
“博弈论研究的是人们在战略情景下的行为方式。这里的‘战略’是指,对弈双方在平等的对局中各自利用对方的策略变换自己的对抗策略,从而达到取胜的目的。战略思维不仅在跳棋、象棋和棋牌上至关重要,在许多商业决策中也是至关重要的。”—经济学家Greg Mankiw。
<<<

博弈论(Game Theory):一种能够让你的竞争对手的最大优势最小化的策略。
!! 结构

<<textSliderNoButton "''博弈论''" "*1">>

返回[[思维模型|Thinking Models]]
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[博物人生]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="卡夫卡小说全集"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[卡夫卡小说全集]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[历代文言小故事]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[历史学的理论和实际]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!!! 芭芭拉·塔克曼:《从史著论史学》

''历史学究竟有什么用?''这似乎成了一个魔咒似的问话,很多历史学家在这个斯芬克斯式的问题面前,总有些尴尬为难。

《从史著论史学》中有一个较好的说法:

<<<
“一个民族为了觉得自己是国家,不但必须有独立和领土,并且还要有历史”(165页),这就说明,历史学最重要的意义就是通过同一个历史的溯源来“建构文化上的认同”。
<<<

只是很多历史学家害怕承认这一点,担心一旦承认了这一点,历史学就再也不是“科学”。

芭芭拉·塔克曼正色说,不要幻想历史犹如科学,

<<<
“如果历史是一种科学,我们应当能够掌握它,认识到它的情况,制定它的模式,知道明天将要发生什么事。为什么我们不能?答案在于我称之为不可知的变数(unknowable variable),也就是人”(307页,原文是1966年10月在芝加哥历史学会上的演说)。
<<<

而历史的魅力在与他的无序和充满变数:


<<<
“想象之于诗人犹如事实之于史家。史家判断力之运用在事实的选择,其艺术在事实的排列,他的方法是叙述,他的主题是人类过去的故事,他的功能是将人类过去的故事公之于众”(37页,原载《纽约时报·书评》1964年3月8日)。
<<<

!!! 丹尼尔·布尔斯丁:《隐藏的历史》

丹尼尔·布尔斯丁批评过于执著和专注于历史年代学的弊病,认为这种“年代学”(Chronology)觉得,历史主要是由某些主要的日期所组成,日期像是历史的骨骼,由历史家赋予血肉。

<<<
“但是,如果我们把历史看作年代学来讲授,界标则会使景观失色”,“重视日期的历史必然是一个突然开始和立即结束的故事,历史的伟大时代和重要人物像是大肆宣扬并以正式的告别辞离开”(104—105页)。

“我们观察历史上的过去通常方法之另一效应,是以我们熟悉我们已经熟悉之事的方法,来增强我们的思考习惯。我们实际上用我们的年代学缩小我们历史的景象。例如,当我们使耶稣的生日成为历史系年的转折点,就是用年代学缩小了历史景象,西元和西元前二词表明一件实际上只被人类一小部分认为是有支配性之事的重要。”(106页)
<<<


2019年03月02日周六上午10:48:06
写了几百字关于蒋介石的日志,由于插件崩溃一下子不可逆,不可得,不复存在。一下子兴趣全无。

冥冥之中也许暗示正如同蒋介石的一生,一时的优柔和清忍,造成蜗居小岛从头再来。

Jay Taylor的[[蒋介石与现代中国的奋斗]]终于在春节前看完了。全书以编年体和纪传体杂糅写法,记述了蒋介石跌宕的一生。史实之详尽蔑视了国内史书之浮躁,引用蒋的日记又还原了一个真实的历史现场。从书中不仅了解了中国近现代历史的真实一面,而且让我对蒋重新在认识。看到了一位殚精竭虑力挽民族与狂澜的民族主义者,看到了一位刚柔并济内敛笃信的新儒教主义者,一位克己复礼的道教主义者,一位毕其一生践行三民主义者,一位至死不渝魂归他乡的老人。

历史都是胜利者的赞歌。而读历史真正的意义在读历史背后的历史,在太阳的一面你会自我催眠、会恍惚和眩晕,而在太阳的另一面也许清冷凄切,但让人保持清醒警惕。

眼前的未必真实,也许只是一块华丽的幕布;历史没有胜利者,大势只是一种偶然的必然性。周遭环境的突变是其偶然,而历史的执牛耳者的人性多寡是其必然,多则屈,寡则起。

2018年02月04日周日上午01:38:38
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[历史的温度3]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
把张贤亮的《[[灵与肉|张贤亮文集]]》和他的代表作《
男人的一半是女人》看完了(电视剧事实上是上面两部作品杂糅在一起的新作,至少主人公的名字很多都一样),也算是补了我对那个时代文学作品无知的缺。张贤亮的作品除了时代意义之外,文学性并不强,有些章节我都是跳读的。除此之外,伤痕文学也不能多读,作品灰蒙蒙的色彩感觉很压抑,除了作品展示的人性善恶永恒话题,贯穿始终的悬在人人头上的政治狼牙棒让人绝望,甚至有一种错乱感,你会想到当下,其实并没有多少改变,变的只是形式和内容。

就说那个时代听收音机这回事吧:


<<<
不知是从什么时候开始,收音机就和“特务”与“反革命”联系在一起。这种意识渗入到每一个人的神经细胞,凡是拥有收音机的人家,都会引起别人特殊的警觉。一个小小的黑匣子,深不可测,里面藏着一个罪恶的世界;光明的、革命的世界只存在于一天播三次音的大喇叭里。除此之外都是谎言,都是魔鬼的咒语。但科学技术不断地突破森严的国界,突破不可逾越的意识形态的界限,用看不见的无线电波把世界牢牢地网罗在里面。把支离破碎的土块箍成一个整体。我激动地装好电池,拉出天线,戴上耳机。在这一瞬间,我自己都有一种犯罪的感觉,尽管我认为收听广播并不是犯罪——既然自信真理在握,为什么害怕人民听到谎言——可是我的手指仍然抑制不住地颤抖,在齿盘上寻找一个个波段。电波穿过太平洋、地中海、红海的上空,越过喜马拉雅山的最高峰,带着暴风雨的沙沙声传到我的耳鼓膜。这一晚上,我一直听到所有的华语广播结束的时候。 结果,我非常失望。
<<<

这是五六十年前作者的感受,也是那个时代过来的人集体记忆的一个点。时下,如果有翻墙经历的人读到上面一段文字,也一定是同样的感受:除了我们在网上发表言论不由自主的自我审查外,翻墙的犯罪感也是不由自主的,甚至有时候看到地铁里警察翻看路人手机时会有一种马上删除梯子的下意识反应。半个世界过去了,进步的是技术,意识形态在徘徊。

技术的进步是无止境的,但是[[政治永远是影响技术进步的最大因素|区块链科技的哲思之一]],意识的进步也远远落后于技术。技术同样裹挟着意识的进步,但这是有代价的。就像互联网技术改变了信息传播的方式,促进了一些意识的觉醒,但同时也摧毁了旧有的传统,文革之后 --- [[80年代的启蒙思潮|中国百年思潮迭代和探究]] --- 一些抬头的思潮重新被瓦解和粉粹。改革开放加上互联网时代的冲击,旧有的思想和传统已经彻底被摧毁,是继文革扫荡之后又一巨大文化断层。这也是为什么近代以来中国难出大家和大师,难有科学进步(中国进步的是技术而非科学)。这也是为什么中美贸易大战,中国被人卡着脖子的本质之一 --- 没有扎实的基础科学(想一想,美国在上世界80年代已经登月了,中国现在还在意淫什么新四大发明)。

前辈历史学家得出:历史的发展呈螺旋上升态势。可惜,我这辈子是看不到历史的拐角和大师辈出的年代了。这种历史的转折需要一段时期的阵痛之后才会到来,俯瞰一下中国时下社会意识流:一团乱麻 --- 思想混乱、信仰缺失(新儒教有抬头迹象,但仍在提倡国学的原始阶段以及功利主义心态),庙堂和草民都沉浸在自娱自乐意淫的前奏阶段,只有等高潮泡沫的破裂,落寞和冷静才会到来。但何时这个彩色泡泡才能爆裂?短则10年,长则50年,我的孙辈可能会享受到那相对美好的时代。又是什么力量使这个彩虹般的泡泡破裂?是内因,吹的过猛?还是外因,如贸易战导致经济崩溃?这一切充满了太多的变数和未知。

2018年06月23日周六下午11:55:09
 <<tabs "[[2019读书目录]] [[2018读书目录]] [[2017读书目录]] [[2016读书目录]] [[Book List]] [[三家村公开版权精品书籍]]">>




<$list filter="[field:book_title[原则]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[叫魂:1768年中国妖术大恐慌]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
最近读书时间都献给了小品文,耽爱沉溺不能自拔。

小品文虽然没有大部头作品恢宏气概,但小品文自有其独特魅力,灵活自由的风格,或戏虐诙谐或辛辣讽刺,或给人醍醐灌顶的棒喝,或给人以血淋淋的鞭挞。鲁迅在[[书卷多情似故人]]里说:


<<<
生存的小品文必须是匕首,是投枪,能和读者一同杀开血路的东西;但自然,它也能给人愉快和休息,然而这并不是“小摆设”,更不是抚慰和麻痹,它给人的愉快和休息是休养,是劳作和争斗之前的准备。
<<<

鲁迅的小品文是出了名的利刃,也是其小品的独特气质。而非生存的小品,确另有一番风味。如之前所读李渔的[[闲情偶寄]]、袁枚的[[随园食单]]、张岱的[[陶庵梦忆]],以及沈复的[[浮生六记|2016读书目录]]等,皆是才子佳人式的情趣。正如钱钟书对沈复的《浮生六记》的评价:

<<<
盖做作之美,最高不过工品、妙品,而本色之美,佳者便是神品、化品,与天地争衡,绝无斧凿痕迹。近译《浮生六记》,尤感觉此点。沈复何尝有意为文?何尝顾到什么笔法被澜?只是依实情实事,一句一句一段一段写下来,而结果其感人魔力,万非一般有意摹写者所能望其肩背。称之为化工,也未尝不可。(见[[书卷多情似故人]]之“说本色之美”篇)  <<ref "[1]">>
<<<

虽然小品短小,但从行文结构上看都是一个独立的作品。加西亚·马尔克斯在其小品集[[梦中的欢快葬礼和十二个异乡故事]]的序所言,其花费的精力并不比一部小说少。


<<<
写一个短篇小说需要付出的心血不亚于为一部长篇小说开头。在长篇小说的第一部分,作者必须把一切都确定下来:结构、语调、风格、节奏、篇幅,有时候甚至要确定某一人物的性格特征。而之后的部分,作家体会到的则是单纯的写作的快乐,那是人类所能想象的最私密、最自我的一种愉悦。如果一个作家没有花费整个余生来修改自己的作品,那是因为他在结束时和开篇时一样意志坚定。而短篇小说既没有开始,也没有结局:只有煎熬或者不煎熬。如果没有感受到煎熬,那么不管是我自己的还是他人的经验都表明,在大多数情况下,最好还是换个思路重新开始,或者直接把它扔进废纸篓。不记得是谁用一句令人欣慰的话精辟地总结了这一经验:一个好作家被欣赏,更多的是由于他撕毁的东西而非他发表的。
<<<

2018年03月24日周六下午11:10:35

延展:[[精品短篇阅读]]

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "所以袁中郎、李卓吾、徐文长、金圣叹等皆提倡本色之美;其意若曰:若非出口成章便不是好诗,若非不加点窜,便不是好文。金圣叹谓诗者心头之一声而已;心头一声有文学价值(如“悠然见南山”,“举头见明月”,“衣沾不足惜”之类)念出便是天下第一妙文;心头一声本无文学价值,任汝如何润饰,皆无用也。 ">>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[合作的复杂性]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[名著之前言与序言]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[君主论]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''其它相似主题:''

<$vars tid="子产政治道德和历史的退步">
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[品人录]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="哲学·科学·常识"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[哲学·科学·常识]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!! 结构
<<textSliderNoButton "''哲学''" "*溯因 (Abduction)
*隐喻 (Metaphors)
*实用主义 (Pragmatism)
*现实主义 (Realism)
*[[还原论|尼采的锤子]] (Reductionism)
*明喻 (Similes)">>

返回[[思维模型|Thinking Models]]
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[唤醒大脑]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="国士无双"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=30%>
</span>

<$list filter="[field:book_title[国士无双]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[国士无双]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[图书馆的故事]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[图说区块链]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[在自己房间里的旅行]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[地理学与生活]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[坎坷半生唯嗜书]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="基因传"><a href={{!!douban}}><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[基因传]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="堕落·流放与王国"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[堕落·流放与王国]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
''“凡是可能出错的事都会在未来出错。”(Anything that can go wrong will go wrong.)。''
<<<


''墨菲定律(Murphy's Law)''是日常生活中经常会发生的一种因果现象。严格来说,墨菲定律应该被成为墨菲效应 <<footnote "①"什么是效应:效果或效应,是指在有限环境下,一些因素和一些结果而构成的一种因果现象,多用于对一种自然现象和社会现象的描述,效应一词使用的泛围较广,并不一定指严格的科学定理、定律中的因果关系。例子如温室效应、蝴蝶效应等等。">>, 因为墨菲定律并不具有定律的普适性并不具有定律的普适性,在某些条件下并不会发生,例如具有容错机制(参见:[[控制论与科学方法论]])的环境下。

<<<
''墨菲定律'',又译为摩菲定理,核心内容是“凡是可能出错的事必定会出错”,指的是任何一个事件,只要具有大于零的概率,就可确定它必会发生。“若缺陷有很多个可能性,则它必然会朝往令情况最坏的方向发展”。
<<<

墨菲定律在日常生活中的表现通常为“第六感”或“事后诸葛亮”。“直觉告诉我要出问题”,“我就说吧,这样不行”。中国人身上最容易发生墨菲效应,因为华夏文化中的缺少一种科学精神,准确的说缺少科学的严谨精神,取而代之的是“差不多”态度,所以在中国人日常生活用语中,充斥着大量“差不多”、“还行吧”、“马马虎虎”、“凑合”等含糊辞令。

那么怎么避免墨菲效应的发生?

首先,意识到存在问题时去解决问题,而不是心存侥幸。

其次,行为设计时做好充分假设,并做好应对措施和容错机制。

当然,这一切都建立在具有科学精神或严谨的态度的基础之上。


//2019年04月20日周六下午01:30:03//
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[夜航船]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[大书特书]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[大自然的社交网络]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[大英博物馆世界简史]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[天使,望故乡]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[奇迹男孩]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<iframe width="600" height="315" src="https://www.youtube.com/embed/yVwxCHHlYr4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<span title="奥斯维辛的小图书馆员"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[奥斯维辛的小图书馆员]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[如何阅读一本书]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
《如何阅读一本书》中的读书方法总结。

作者认为读书有三个层次:

!第一层次:基础阅读

基础阅读基本要求就是识字就可以,差不多相当于我们小学4.5年级时候的状态。这也是阅的基础。

!第二层次:检视阅读

检视阅读,才算是真正进入阅读的层次。检视阅读是大部分读者所忽略的阅读阶段,或者方法。检视阅读也可以称为粗读、快读或者略读,顾名思义就是对一本书,囫囵吞枣式的进行快速扫描一遍,不要被书中的障碍所羁绊,从而对书总体上有一个大致了解,从而判断您是否对此书感兴趣,或者判断此书是否有简直。

!!检视阅读一:有系统的略读或粗读
#先看书名页,然后如果有序就先看序。
#研究目录页,对这本书的基本架构做概括性的理解。
#如果书中附有索引,也要检阅一下——大多数论说类的书籍都会有索引。
#如果那是本包着书衣的新书,不妨读一下出版者的介绍。
#从你对一本书的目录很概略,甚至有点模糊的印象当中,开始挑几个看来跟主题息息相关的篇章来看。如果这些篇章在开头或结尾有摘要说明(很多会有),就要仔细地阅读这些说明。
#最后一步,把书打开来,东翻翻西翻翻,念个一两段,有时候连续读几页,但不要太多。

!!检视阅读二:粗浅的阅读

头一次面对一本难读的书的时候,从头到尾先读完一遍,碰到不懂的地方不要停下来查询或思索。只注意你能理解的部分,不要为一些没法立即了解的东西而停顿。继续读下去,略过那些不懂的部分,很快你会读到你看得懂的地方。你从头到尾读了一遍之后的了解——就算只有50%或更少——能帮助你在后来重读第一次略过的部分时,增进理解。就算你不重读,对一本难度很高的书了解了一半,也比什么都不了解来得要好些——如果你让自己在一碰上困难的地方就停住,最后就可能对这本书真的一无所知了。

检视阅读是一种训练有素的快速阅读,是一种主动阅读。

!!主动的阅读基础:四个基本问题
#整体来说,这本书到底在谈些什么?你一定要想办法找出这本书的主题,作者如何依次发展这个主题,如何逐步从核心主题分解出从属的关键议题来。
#作者细部说了什么,怎么说的?你一定要想办法找出主要的想法、声明与论点。这些组合成作者想要传达的特殊讯息。
#这本书说得有道理吗?是全部有道理,还是部分有道理?
#这本书跟你有什么关系?如果这本书给了你一些资讯,你一定要问问这些资讯有什么意义。为什么这位作者会认为知道这件事很重要?你真的有必要去了解吗?如果这本书不只提供了资讯,还启发了你,就更有必要找出其他相关的、更深的含意或建议,以获得更多的启示。

!!如何让一本书真正属于你自己
那就是做读书笔记。作者没有告诉一些具体的方法,只给出了三种记笔记的方法:

# 结构笔记(structural note-making)
# 概念笔记(conceptual note-making)
# 辩证笔记(dialectical note making)

注:由于时代变迁和技术进步,作者的这三种读书笔记方法并不可取。个人认为,要想把一本书真正的属于自己,就是边读边记录,''用自己的语言以最简单的阐述总结书中所讲的知识点,包括疑问、联想、启发等''。就像本则读书笔记,看完后进行会议和总结。

!第三层次:分析阅读

分析阅读我自己定义为深度阅读,在检视阅读后,对书有了一个基本的了解,从而判断此书对自己是有价值的,或者是自己感兴趣的,从而带着目的进行深入阅读。

不过,我不赞同作者把读书笔记以及主动阅读的四个基本问题放在检视阅读阶段,而应该放在分析阅读阶段''。检视阅读应该用最少的时间最快的速度迅速了解全书,继而决定是否进入分析阅读阶段。分析阅读阶段才是有目的的阅读,带着问题,解决问题,找出书中的亮点并转化为自己的,这一阶段真正的核心是“先把书读厚再读薄”。''

<<imageSlider  [[https://cl.ly/pGC1/%E5%8E%9A%E8%96%84.jpg]]    "先把书读厚再读薄(点击展开)">>




!第四层次:主题阅读

一般做学术和科研研究为业者多为主题阅读,即就一个主题从多本或多系列书籍展开阅读,钩沉索隐,穷搜经典,发覆探幽。

PS. 梁文道之前的节目《开卷八分钟》曾经介绍过这本书,不过梁介绍的有点杂乱,见此:(Youtube,需科学上网)

<iframe width="560" height="315" src="https://www.youtube.com/embed/dPbkbSM25OA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/z4GhU0GEKNg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

!本书下载地址:
[[《如何阅读一本书》|https://www.asuswebstorage.com/navigate/s/C45AB94451FE4E86A7D205F4D8F9F3024]] (mobi格式)

<$button message="tm-close-tiddler">Close Me!</$button> 
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[如何阅读一本文学书]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="如是我读"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[如是我读]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
子产相郑 <<footnote "①"子产在郑国做相国的时候">>,病将死,谓游吉曰:“我死后,子必用郑,必以严莅人 <<footnote "②"必须严厉对待人民">>。''夫火形严,故人鲜灼;水形懦,人多溺。''子必严子之形,无令溺子之懦。”子产死,游吉不肯严形,郑少年相率为盗,处于萑泽  <<footnote "③" 萑(huán)泽:泽名。">>,将遂以为郑祸。游吉率车骑与战,一日一夜,仅能克之。(节选自《韩非子》-子产诫游吉)
<<<

昨天我看《[[君主论]]》时候[[说“马基雅维利主义”中国早已有之|政治有道德吗?]],就是法家韩非子的主张。睡前看先秦文言故事就看到了《韩非子》- 子产诫游吉篇,更印证了我的想法。

子产是郑国名相。子产所说的“夫火形严,故人鲜灼;水形懦,人多溺。”,实为法家思想,用严格的法律惩戒人民,从而使民众远离犯罪。

韩非子法家思想是战国时期唯一的改革派思维。儒、墨、道各家有一个共通的态度,就是托古立言;他们都假托古圣贤之言以自重。孔子托于文王、周公,墨子托于禹,孟子托于尧舜,老、庄托于传说中尧、舜以前的人物;一个比一个古,一个压一个。尧舜禹都是传说中的大圣大贤人物,这就是决定了孔孟和老庄的政治主张都是有道德一面的。不托古而变古的只有法家。法家源流于“法术之士”(见《韩非子·定法》),法术之士是以政治为职业的专家,这就是决定了法家思想非道德的一面。而法家思想的缘起还要看当时的社会环境,才能正本溯源,认清本质。春秋末期,封建制度开始松动,贵族政治崩坏,出现了两方面的结果:一方面是平民的解放,一方面是君主的集权。这时候国家的范围,一天一天扩大,社会的组织也一天一天复杂。人治、礼治,都不适用了。法术之士便创一种新的政治方法帮助当时的君主整理国政,做他们的参谋。这就是法治。当时现实政治和各方面的趋势是变古——尊君权、禁私学、重富豪。法术之士便拥护这种趋势,加以理论化(见朱自清《经典常读》诸子篇),便成了法家,中国早期的“马基雅维利主义”。法家思想影响深远,绵延到今天而不绝。

再回头看子产的“夫火形严,故人鲜灼;水形懦,人多溺”观点,虽说是法家思想。但就子产本人来说,并非绝对的法家派,《新序》子产不毁乡校篇可见一斑:

<<<
郑人游于乡校 <<footnote "④" 乡间学校">>,以议执政之善否。然明谓子产曰:“何不毁乡校?”子产曰:“胡为?夫人朝夕游焉,以议执政之善否。其所善者,吾将行之,其所恶者,吾将改之,是吾师也,如之何毁之?吾闻为国忠信以损怨,不闻作威以防怨。譬之若防川也,大决 <<footnote "⑤" 决堤">> 所犯,伤人必多,吾不能救也,不如小决之使导,吾闻而药之也。”
<<<

子产为何不毁乡校?“其所善者,吾将行之,其所恶者,吾将改之,是吾师也,如之何毁之?”兼听则明,从善如流。“郑人游于乡校,以议执政之善否”这可能是中国最早期的集会结社的自有。从这几点来看,子产的政治观点还是有善政一面,具有政治的道德性。几千年前的政治主张比我们现在还明善!如今的自我审查,莫谈国是,是一种历史的严重倒退。

人类几千年的发展史,进步的是术,日新月异的技术发展;而在道 --- 人性和思想--- 方面的进步微乎其微。

2018年05月13日周日上午11:25:48

<$list filter="[field:book_title[子弹笔记术]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
我好古,而非耽爱,只是想学会一种语言,掌握一种表达。之前我曾经[[提到一句话|关于读书的两个视频]]:掌握一种新的语言(例如管理学、金融学等)可以增大自己能力,改变自己的思维模式。古文,文言文相对当下的白话文算是另一种语言,我之前也提到过学文言的好处 <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" $state="image-buttons"> 
{{读文言文有什么用?}}
</$appear> 。也为此单独建立了文言文阅读和学习的主题:[[文言津逮系列]]。

五四时期以胡适为首的新文化运动学派发起白话运动,彻底斩断了中国文化几千年的文脉,把中文表达代入另一种话语系统时代,虽然白话作为书面表达语言极大的促进了沟通效率,降低了几年来文人有意或无意竖起的围墙,但事物的另一面是:也割裂了文化之根。 有人这样形容文言:

<<<
古典中文根本是由几个世纪的典故用一种简要的编码组成,流传于一个书虫们组成的精英小团体中,他们自己都彻底了解任何一点相关的文学背景。
<<<

这样描述也不为过,就像最近看这本书 --- [[怎样学古文二十五讲]]里周振甫 <<ref "[1]">> 先生所指出的,学习古文的障碍除了基本的一些词义古今异同、语法结构特殊之外,很大的障碍就是文言文里面的用典。古代文人喜欢掉书袋,用典的多少昭彰着作者学术造诣的深浅,就像微信朋友圈里面很多人喜欢晒豪车一个意思。

学习古文就要扫清这些障碍。作为业余学习者,除了多读之外,无它捷径可循。也不必死记硬背,找几本有故事情节、好看的书作为切入点,一点点读,读出书中的乐趣,自然水到渠成。

新文化运动从1918年算起到今天也不过区区1个世纪,相当于文言作为书写和叙事的历史实在是太短太短,可是我们连一个过渡阶段都没有。为什么这么说那?老一代国学大儒已经故去,文革又来了一次清洗,50、60年代的人又没有正经的接受过传统教育(他们是下乡青年的主题),旧学彻底断层。70、80年代的人课本上所学的那些“抽禾日当午”式古代文学只是沧海之一粟,还都是为了应付考试,放眼望去身边有几个人还乐道与古文阅读和写作。而90和新世代属于互联网原住民,网络信息的沉淀更拓宽了文言和白话之间的鸿沟,未来的结果是可以想象的到的结果:文言不再飞入寻常百姓家,只能属于学者象牙塔里面的一套语言编码系统。

一百年荡涤了几千年积累起来的宝库。可惜!!

--

<<<
吕祖谦说:“学文须熟看韩、柳、欧、苏。先见文字体式,然后遍考古人用意下句处。第一看大概主张;第二看文势规模;第三看纲目关键,如何是主意首尾相应,如何是一篇铺叙次第,如何是抑扬开合处;第四看警策句法,如何是一篇警策,如何是下句下字有力处,如何是起头换头佳处,如何是缴结有力处,如何是融化屈折、剪裁有力处,如何是实体贴题目处。”
<<<


<<<
学会读古文跟学会读外文相似。我向语言学大师吕叔湘先生请教,他小时候怎样学外文的。
<<<


-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "1931年,周振甫入无锡国学专修学校,跟随学者钱基博(钱锺书父亲)学习。1932年,在上海开明书店任《辞通》校对、编辑。周振甫和钱钟书有深厚的学术情谊。周振甫于1977年给中华书局写《建议接受出版钱锺书先生的〈管锥编〉》提到:“钱先生在英国文学界有较高的地位,英国人编的文学史,有专章讲述钱先生的文学创作”。振甫曾负责《谈艺录》与《管锥编》的编辑工作,钱锺书亲笔赠言:“校书者非如观世音之具千手千眼不可。此作蒙振甫兄仇勘,得免于大舛错,得赐多矣。”三十年代初,周振甫开始从事编辑工作,负责编辑的著作有《乐府诗集》、《李太白全集》、《管锥编》等。参加了《明史》点校和《鲁迅全集》注释。编辑之余,还著有《文章例话》、《诗词例话》等书。">>
<$list filter="[field:book_title[宋代人物列传]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span title="对赌"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[对赌]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="寻圣光的人"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[寻圣光的人]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[[牧羊少年奇幻之旅]]
需科学上网观看:

<iframe width="560" height="315" src="https://www.youtube.com/embed/IomhvaEe2q8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<span title="尼采的锤子"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[尼采的锤子]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<textSliderNoButton 公司与个人 "
#公司是盈利性组织
#个人和公司必须双赢
#在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作">>

<<textSliderNoButton 如何做事 "
# 方法论
## 完成一件事有好几条途径,优秀的人的途径最短
##任务拆分很容易得出做事的方法论
##好的「方法论」会让你具备更强的「创造力」!
###时刻问自己:「是否具备创造力?」

#任务拆分
##''成长过程会经历:能力越大、责任越大、事情越多
''

##思路
###拆分细化为多个点
###任务四象限,决定优先级
####紧急重要
#####赶紧搞定
####重要不紧急
#####时刻保持关注,以免沦为「紧急重要」
####紧急不重要
#####少少益善,学会拒绝
####不紧急不重要
#####靠自律

##SMART原则
###S:任务是否明确
####不明确的任务搞起来就是浪费生命
###M:任务是否可度量
####不可度量如何体现价值?
###A:任务是否可搞定
####搞不定就不应该接,接就得有魄力搞定
###R:任务的相关性如何
####决定了任务的价值,相关性越高越能体现价值,比如这个任务搞定了能让团队获得公司、客户等更大的认可
###T:任务的时间
####Timeline:任务时间轴,什么时间点需要搞定什么
####Deadline:任务的最后期限,做评估时最好提前,因为总会有各种意外或拖延本性
####Timeline上一些很关键的时间点我们可以称为里程碑,搞定每个里程碑应该庆祝下
##自己欠缺什么,立马发现
##是否需要寻求帮助,谁能帮你,自己单干? Arrow Link

##团队
###士气第一
###当你有团队时,分配与调度好任务很关键
###做得好是真并发
###做不好会死锁">>


<<textSliderNoButton 沟通、反馈与责任 "
#一个无沟通能力的人,要么是天才,要么是不可爱的人,不过天才也就寥寥无几而已,你并不是
#反馈要及时
##避免出问题不反馈,影响进度
##方式
###正式的:邮件
###临时的:微信等即时通信
###着急的:给个电话
#工作有大小,责任心无大小

#''周报的透明''
##意义:大家互相了解工作与心得,有利于自己的判断与成长
###观察是一种多重要的技能
###不是单纯的给领导汇报工作
##周报需体现本周工作总结、下周工作计划、心得/问题/建议(我们叫唧唧歪歪)
##周报可以很好体现一个人的
###总结能力
###计划能力
###分享能力
####想象下:一个人从来没有心得/问题/建议的沉淀或反馈,这个人是一个相对封闭的人,在团队作战中很难达到默契
####当然,这种分享能力远不仅仅是在周报这种形式里">>

<<textSliderNoButton 团队意识 "

#很多人都说自己具备足够好的团队意识,但是有些人却并不是这样
##举个小例子:一个10人团队约定早上10点开会,而你迟到了10分钟,对于团队来说你浪费了整个团队100分钟(10人*10分钟)的生命。有些人无羞愧之心要么是意识不到这点,要么这个团队的风气就是这样...
#团队意识是建立在互相信任的基础上
#Leader最关键,优秀的Leader一定会有个优秀团队
##兵熊熊一个
##将熊熊一窝">>

<<textSliderNoButton 成长 "
#新事物的敏感性
##保持好奇心
##不要局限在自己的圈子,适当跨界吸收灵感
##订阅国内外优秀博客/资源,Inoreader/深蓝阅读不错
##选择性参与一些必要的会议,听必要的主题,讨论必要的话题
#关于知识
##对知识的渴望程度决定了前进动力的大小
##当知识很廉价地摆在你面前,你反而不会珍惜
##对知识保持敬畏之心
#不要让自己成为矫情/浮夸的人
#和比你厉害的人在一起,和一流的人工作
##指点往往是精华
##杜绝笨蛋爆炸
###二流的人招进来的人不太可能是一流的
###久而久之一个团队就笨蛋爆炸了
#思考
##批判性思考
##换位思考
###对于一个团队来说,这点太关键
#提问的智慧
##遇到问题先独立思考,尝试独立解决,尽最大努力后再提问
##提问时,礼貌很关键(对知识的敬畏),清晰表达很关键
##解决后,分享出来帮助更多需要帮助的人
#小事心态
##越基础的事越关键,越需要细心
##不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
##基础不牢、地动山摇
##小事做不好,别提大事
#无论是个人还是团队的成长都需要不断沉淀知识,没有沉淀根基不稳
">>


<$button message="tm-close-tiddler">Close Me!</$button>
<ul>
  <$list filter="[tag[已读]sort[created]]">
    <li>
	<$link><$view field="title"/></$link>    @@color:gray;作者:<$view field="author"/>@@

<$list filter="[<currentTiddler>days[-10]]">  @@color:red;^^新^^@@</$list>
 <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orang;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-356]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
</li>
  </$list>
</ul>


去年看完林语堂的《[[苏东坡传]]》,接着找来了苏东坡的随笔集《[[东坡志林]]》来读  <<footnote "①"" 可到[[三家村公开版权精品书籍]]下载">>。

<<imageSlider  [[https://i.loli.net/2018/08/12/5b70519230d52.jpg]]    "赵孟𫖯绘:苏东坡">>


苏东坡是个天妒其能的人,徒具大才,而一生几经变数,颠簸流离,穷困潦倒。而他并没有隐忍遁世,做一个骑鹤下扬州书画琴棋诗酒花的清流,依然与天斗,与人斗,在穷困面前学会了逆来顺受,甚至会用柴米油盐酱醋茶幽生活一默。我想这一切的原动力皆来自于苏东坡对家人的热爱,对生活的热爱。

<<<
洛下有洞穴,深不可测。有人堕其中不能出,饥甚,见龟虵无数,每旦辄引首东望,吸初日光咽之,其人亦随其所向,效之不已,遂不复饥,身轻力强。后卒还家,不食,不知其所终。此晋武帝时事。辟谷之法以百数,此为上,妙法止于此。能服玉泉,使鈆汞具体,去僲不远矣。此法甚易知易行,天下莫能知,知者莫能行,何则?虚一而静者,世无有也。''元符二年,儋耳米贵,吾方有绝粮之忧,欲与过子共行此法,故书以授之。''四月十九日记。
<<<

苏东坡所记这则养生辟谷说,看后十分酸楚。苏被贬海南后,由于米贵而趋于断炊,于是便想着叫孩子过吃空气之法。

<<<
张君持此纸求仆书,且欲发药。不知药,君当以何品?吾闻《战国策》中有一方,吾服之有效,故以奉传。其药四味而已:''一曰无事以当贵,二曰早寝以当富,三曰安步以当车,四曰晚食以当肉。''夫已饥而食,蔬食有过于八珍,而既饱之余,虽刍豢满前,惟恐其不持去也。若此可谓善处穷者矣,然而于道则未也。安步自佚,晚食为美,安以当车与肉为哉?车与肉犹存于胸中,是以有此言也。
<<<

这则“赠张鹗”可谓是苏东坡的“处穷哲学”了,也是其对生活的态度和幽默:车与肉犹存于胸中,是以有此言也!胸中有华车糜肉,其它不都是多余的吗?

2018年04月23日周一下午09:19:56
"""
[img[缪勒-莱耶错觉图|https://cl.ly/ofDV/Snipaste_2018-01-05_23-53-30.png]]
上图线条一样长吗?

现象:第二条线畅读长于其它两条。
事实:而事实是什么样子那?
<<imageSlider  [[https://cl.ly/ofIx/Snipaste_2018-01-05_23-53-49.png]]    "事实是这样子的">>
上面两线条的区别是箭头的方向不一样,但是整个效果给人一种错觉。这就是缪勒-莱耶错觉图 <<ref "[1]">> 。

也就是说,我们思考系统1给出的直觉判断是错误的,系统性失误。我们需要通过系统2进行测量才可以确认等长的真实情况。

现实情况是:即是我们知道上面两条线长度相同,但是我们还是无法视为等长。这是因为系统1的思维是不能被关闭的。很有可能系统2对系统1的错误也毫无所知。

解决问题:当看到两条线和不同方向的箭头时(危险信号),我们必须学会怀疑自己的感觉。要坚持这一规则,我们必须具备识别错觉的能力,调用相关知识储备,从而才可以避免掉入缪勒-莱耶错觉陷阱。也就是系统2对系统1的判断有所警觉。

思考快与慢的作者丹尼尔•卡尼曼在书中对错觉陷阱并没有给出好的解决方案,他的建议是:“最好的解决办法就是妥协:学会区别常会出现重大错误的情景,在风险高的时候,尽力避免这些错误”。这等于正确的废话。

上述错觉不仅是视觉上的,还有思维方面的,统称为认知错觉 <<ref "[2]">>。例如摩西错觉 <<ref [3]>>。而我认为做好的解决办法是建立自己科学的思维框架:而以上所说的坚持的规则,即要建立自己的[[思维框架|Thought Framework]],而要调用和储备的知识则是[[科学思维模型或原则|Mental Models]]。

附:动态缪勒-莱耶错觉图
[img[动态缪勒-莱耶错觉图|http://i68.tinypic.com/35je248.jpg]]

[[常见的视错觉|https://zh.wikipedia.org/wiki/%E8%A6%96%E9%8C%AF%E8%A6%BA]]

//2017年12月28日 下午 08:25:12//
--- 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ 
<<footnotes "[1]" "Müller-Lyer illusion,The illusion was devised by Franz Carl Müller-Lyer (1857–1916), a German sociologist, in 1889.">>

<<footnotes "[2]" "认知心理学,(英语:Cognitive psychology)是最新的心理学分支之一,认知心理取向的重点在认知的消息处理模式------ 一种以心智处理来思考与推理的模式。思考与推理在人类大脑中的运作便像电脑软件在电脑里运作相似。认知心理学理论时常谈到输入、表征、计算或处理,以及输出等概念。">>

<<footnotes "[3]" "“摩西上方舟时,每种动物各带了多少?”发觉这个问题有问题的人太少了,因而有人将此称为“摩西错觉”。摩西并没有带动物上方舟,带动物上方舟的是诺亚。">>
阅读就像漫步沙滩,远眺天海一线,脚下波涛汹涌,信步中偶然会捡拾到漂亮的贝壳和从遥远的地方或时代飘来的漂流瓶。下面这些只言片语就是我从书海中捡拾的一个个漂流瓶,带着遥远的人从遥远的地方、遥远时代的寄语:

''注''  <<ref  "[1]">>


```
阅读是一种力量,让我们安静地存在。尼采说,上帝死了,然后,福柯说,人死了。所以我们在活着的时候,必须好好活着。

人生是一种习惯,甚至只是一种阅读习惯,因为天堂大致就是图书馆的模样。

昆德拉曾经预言说:“一旦每一个人心中那个沉睡的作家苏醒了(那一天已经为期不远了),那么我们就陷入了一个相互成为聋子和哑巴的世界,一个互相无法理解的世界。”这一天在中国,其实已经提前来到了。


“中国有幸出了鲁迅,他是中国历史的光荣;中国也不幸,其所走过的道路,往往不断见证鲁迅的远见卓识。中国知识分子有幸,有鲁迅这样的人物为我们作出榜样;中国知识分子也不幸,有了鲁迅这样的人物,益发令我们感到羞耻。”“幸”与“不幸”都是现实,所以我们都应该正视。


大多数经典的写作方式只能是从概念到概念,从推断到推断,从灵感到灵感。这种写作方式往往能创造出很多很漂亮很有启发性的理论框架,但是很难校验这些理论的有效性,又因为不能校验它的有效性,即,没有“证伪”它的可能性,知识很难有效积累。

一切经典本质上都是基于那个作者对他所处的时代的问题的回答与思考,那么要真正读懂它并且读得心领神会,只能是因为:第一,你对他所处的时代及其问题有相当的了解;第二,你认为他所处的那个时代与你现在所处的时代有相似性,而且你能理解其相似性以及不同性在哪,由此批判地理解他的思考对于当下的意义。

世上本没有经典,装得人多了,也就有了经典。

傅山还有“四以”之语:“以好色之情好德,以修名之法修身,以畏神之觉畏人,以救灾之勇救过。”

其一,“经济学家们都知道,为市场辩护比较对人胃口,而为政府辩护则不讨人喜欢。为此,他们就大谈自由”。其二,“逻辑往往不会赢得人缘,一个坦率指出社会的悲剧收场的人,几乎肯定是无法获得众望的”。

托克维尔其实对群众时代的原子化极为恐惧,但他相信大势已定、逃避无益;因此他对理性认同、感情陌生的新时代用尽了廷臣的恭维,这种客套绝不会用在“像自己一样可靠”的老朋友身上。恭维背后,他是想尽可能礼貌地发出警告:“末人”的自私将会普遍降低文明的素质。群众平等的洪水过后,只剩下官僚平庸专制的淤泥。......“末人”的自私将会普遍降低文明的素质。群众平等的洪水过后,只剩下官僚平庸专制的淤泥。

托克维尔也是一位优雅和周到的廷臣。他在弗朗索瓦一世和查理二世的宫廷中都能如鱼得水,能让卖花姑娘在绅士淑女当中怡然自得。这种人从来不会忘记在作品中赞美死敌“心胸高尚”,却可能忘记表扬真正的朋友。其中道理,无异于玛丽·安东尼特在断头台上向刽子手道歉。如果你比敌人更有失风度,你就是输家。

文笔是视野、境界和洞察力的镜子,这些比材料重要得多。

鲁迅少年时求学的“三味书屋”老师寿镜吾所示:“读经味如稻粱,读史味如肴馔,诸子百家,味如醯醢(xī hǎi 见注脚)。”经济学也有读书三味,读理论味如稻粱,读历史味如肴馔,各家学派,味如醯醢。在我已届知天命之年,回味无穷。 

有些经典论述的重要性并不在其内容,而是陈述方式非常精彩。

怀特海曾说过,整个西方哲学史不过是柏拉图哲学的一系列注脚。

——就是这样,从来没有什么“救国文化”,文化就是文化,灵魂世界的装饰品,政治世界的缄默者,它既出于必死之人,它自己也必将死去。凡以文为生者,都当如斯宾诺莎那样感知到命运所给予的平凡。

“已过的世代,无人记念;将来的世代,后来的人也不记念”,因为那出自尘土的,必将归于尘土,那已归尘土的,则不该再看到阳光。寄居特洛伊的希腊美妇人海伦曾经预见到自己死后将会成为后世的歌题,而我们的文人们则应该做好不被后人记念的准备。

身为文人,在对纷纭世事的清明洞察下,以及在对自身的文化职业的有限性的意识中,耕耘自己的园地,做一个安静正义的国家公民,这是文人自身的启蒙乃至救度,它肯定救不了“国”,但却一定能救得了自己。——“这一切原本都甚好。”

俄罗斯文人的命运提示我们,文化可以装点一个盛世中的国家,甚至可以陶醉一群贫乏无味的灵魂,但不能被用来救国度民,因为它自身不具备此等国民政治大业所需要的材质。

19世纪的俄罗斯文人是那么迷醉于所谓“高尚”的“文化”,以至于忘了去培养一种在他们看来极其低贱的文化,一种一个民族藉以克服命运与暴力的威胁并体面地安身立命的文化,一种千秋万代的岁月洪流中的万国立法者所孜孜不倦的、因而也是人之为人所能成就的最高文化,一种古代的摩西和近代的彼得大帝曾经筹建过的文化:政治。

罗马帝国晚期哲学家、政治家塞涅卡的斯多亚式的坚韧:“这个俗世中的事情是渺小琐屑的,我们之所以决定还要在其中活下去,是因为它还有值得研究的地方”(塞涅卡《自然问题》,vii. 31. 2)

要按照人世的本来面目去看待人世,而不要按照我们所希望的样子去想象这个人世(《政治论》I. i-iv,《神学政治论》,序言)。

“当谈论人世间时,决不应当讥讽、悲哀或诅咒,而应当首先去理解”

“每种学科的重要著作是很少的,其他著作不过是把这少数著作里说得更充分而清楚的话加以重复、冲淡和损害罢了……我仅读那具有独创性的东西,并且只要理解了这独创性就不再多读。我所念过的每本书都是最精彩的,免得多读好几百本书。”

```
下接:[[开启那遥远时代的漂流瓶2]]

醯醢(xī hǎi)  <<ref  "[2]">>


//2018年03月07日周三下午10:24:59//

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "醯 ,醋,醋的旧称。醢,用肉、鱼等制成的酱。">>

<<footnotes "[1]" "由于作者和书籍庞杂,就不注明来自何人和其著作了。">>
上接[[开启那遥远时代的漂流瓶]]


```
科技的双刃剑意味在于:在不停推动文明的同时,不断丧失人文的高度。

读书最忌讳的,就是于心灵积下厚厚的灰尘。所以有说,人生识字糊涂始。知识即力量,只是道出了知识这枚硬币的一个面。知识之币的另一面,是心灵的尘垢。

书本写作,被归入知识的,通常是头脑的思考结果;唯有被视为智慧的,才是心灵的低语。

一战爆发前,世界霸主似要即将易手的局势,更让现代人有似曾相识之感,人类的智慧与天性一直滞后于物质、科技的提高,无法对其抱有过于乐观的估计。

萨拉热窝的几声枪响。这一巨大、重要的事件又一次证明,人类运用理性与智慧来预测社会宏观事件,常常会沦为笑柄。

科学研究发现“我们将其作为‘现在’、‘感觉到的’现在实际经历的时间跨度大约仅为五十分之一秒长”。(Ernst Breisach, Historiography: ancient, medieval & modern, Chicago,1994,2nd ed, p. 2)所以,当你意识到现在是“现在”的时候,它已经变成了过去,而你却正生活在未来。

对过往经典的研究,其要旨就在于从字里行间仔细探究其微言大义,从中找寻永恒智慧的踪迹。

不要为自己做过仰望星空这么简单的事儿而感动。

所谓的正确阅读,怕是从来就没有的。恐怕只有好的阅读,它会不断地启示和塑造,让我们从全新的角度另眼看世界,这个循环往复的过程,才是阅读的目的吧。

人与书的相遇,需要恰到好处的契机。

胡河清讲述自己的写作生涯:“文学对于我来说,就像这座坐落在大运河侧的古老房子,具有难以抵挡的诱惑力。我爱这座房子中散发出来的线装旧书的淡淡幽香,也为其中青花瓷器在烛光下映出的奇幻光晕所沉醉,更爱那断壁颓垣上开出的无名野花。我愿意终生关闭在这样一间屋子里,听潺潺远去的江声,遐想人生的神秘。”

面对现实中的无聊、琐碎和虚无,如果没有精神需求,会遁入犬儒,如果有些精神需求,又很容易委身于灼热的宏大概念。

阿伦特试图为“政治”正本清源,恢复政治与公共生活的关系。她强调政治不应被等同于权力斗争,应通往开放的公共生活。把政治等同为权力斗争,会产生两种结果,一种是参与权力斗争,一种是远离权力斗争,这都是极权政治所期待的——狂热的积极分子和冷漠的袖手旁观者,是谎言得以盛行的条件。

要现代派!卡夫卡是祖宗,威廉·福克纳、詹姆斯·乔伊斯、金斯堡、罗布-格里耶、加缪、萨缪尔·贝克特、尤金·尤涅斯库、胡安·鲁尔弗、略萨、加西亚·马尔克斯、普鲁斯特,一一被圈入现代派。一部《城堡》,让你进不去也出不来。流氓切口似的,球迷称迭戈·马拉多纳为迭戈,文学要称马尔克斯为加西亚·马尔克斯,这样更亲切更内行更见时髦。一时也记不清他们是哪国人,用什么语言,死了还是活着,记不清译者,那时没网络可查。仅仅一个名词就够了:现代派!意识流!荒诞!黑色幽默!
```
待续[[开启那遥远时代的漂流瓶3]]


2018年03月09日周五上午12:36:03
<$list filter="[field:book_title[张贤亮文集]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="查当我谈跑步时我谈些什么"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[当我谈跑步时我谈些什么]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
罗素认为:

<<<
真理大体可分为两种:一种叫做外延的真理(extensional truth),一种叫做内容的真理(intensional truth)。外延的真理大体是指科学的真理,如自然科学的真理或是数学的真理。
<<<


外延的知识可以脱离我们主观的态度(subjective attitude)。凡是不系属于主体(subject)而可以客观地肯断(objectively asserted)的那一种真理,通通都是外延真理。

内容真理,内容命题通通是系属于主体,系属于主观态度上的一些话。

真理都是有普遍性的。

逻辑实证论者认为:形上学里边的那些话都是一些''概念的诗歌''(conceptual poem)。诗歌是满足我们的情感,所以他们说形上学只是概念的诗歌,都只是来满足我们主观的情感。(逻辑实证论者只承认外延的真理,而否认内容真理,这是一种对自我的一种否定。)

从语言的属性来看,唐君毅先生就曾经提出这样的观点:

<<<
他提出从我们事实上使用语言所表现的来看,当该是三分:科学语言是一种;文学语言是情感语言:至于道家、儒家所讲的,这些还是学问,他们所讲的是道。道不是情感;道是理性。但是这个理性我刚才说过,它不是在科学、数学里面所表现的那个理性。它既然是理性,因此表达这种理性的语言自就不是文学语言这种情感语言,可是这也不是科学语言。所以唐君毅先生提议把这种语言叫做''启发语言''(heuristic language)。
<<<

把逻辑实证论者的观点和唐先生的观点结合起来,似乎好理解一点:形而上的内容,也就是概念的诗歌,属于一种启发语言。

2018年06月10日周日下午07:05:36

在《西方思想传统》一书中,两位作者雅各布·布朗诺夫斯基和布鲁斯·麦兹利希明确了思想活动的三大“门类”:

<<<
第一个门类是真理,''寻求真理是宗教、科学和哲学关注的焦点'',而在理想世界中达成的一致将是绝对的和不自觉的,这就意味着必须在逻辑、数学或演绎层面体现出来。其次是''追寻正义,这是法律、伦理和政治关注的焦点'',此时达成一致主要是自觉的,虽然不需要绝对一致,但要想发挥作用仍然需要广泛地传播。第三个门类是''品位,主要涉及艺术'',完全不必达成一致,不同意见的碰撞往往更有成效。
<<<

2018年06月12日 23:34

宗教、哲学以及主体态度的表现和表象属于内容真理范畴。

2018年06月15日周五下午10:28:43
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[心流:最优体验心理学]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!! 结构
<<textSliderNoButton "''心理学''" "*行动偏差 (Action Bias)
*行动者-观察者偏差 (Actor-Observer Bias)
*逆向选择 (Adverse Selection)
*情绪启发 (Affect Heuristic)
*阿克洛夫的柠檬 (Akerlof’s Lemons)
*选择性失明 (Alternative Blindness)
*可选路径 (Alternative Paths)
*模糊厌恶 (Ambiguity Aversion)
*[[定锚偏见 (Anchoring Bias)|https://hurricanecapital.wordpress.com/2014/05/04/mental-model-anchoring-bias/]]
*主观一致 (Arbitrary Coherence)
*联想偏差 (Association Bias)
*注意偏差 (Attentional Bias)
*吸引效应 (Attraction Effect)
*归因理论 (Attribution Theory) (aka Cause Theory)
*权威-错误影响倾向 (Authority-Misinfluence Tendency)
*自动化偏见 (Automation Bias)
*自动催化作用 (Auto Catalysis) (aka Evergreen or Self-Breeding)
*[[可得性偏差 (Availability Bias)|https://hurricanecapital.wordpress.com/2015/09/07/mental-model-availability-bias/]]
*错误衡量易得性倾向 (Availability-Misweighing Tendency)
*贝比鲁斯效应 (Babe Ruth Effect)
*逆火效应 (Backfire Effect)
*从众效应 (Bandwagon Effect)
*巴纳姆效应 (Barnum Effect)
*基本比率忽视 (Base-Rate Neglect)
*摇摆效应 (Beaty Effect)
*“因为”正当 (‘Because’ Justification)
*狗屎运 (Beginner’s Luck)
*信念偏差 (Belief Bias)
*本福德定律 (Benford’s Law)
*偏见盲点 (Bias Blind Spot)
*稳操胜券谬误 (Bird in the Hand Fallacy)
*怪异效应 (Bizarreness Effect)
*旁观者效应 (Bystander Effect)
*改变偏差 (Change Bias)
*司机的知识 (Chauffeur Knowledge)
*啦啦队效应 (Cheerleader Effect)
*童年失忆症 (Childhood Amnesia)
*支持选择偏差 (Choice-Supportive Bias)
*延迟选择 (Choice Deferral) (Procrastination)
*偏颇选择 (Cherry-picking)
*选择过载 (Choice Overload)
*聪明汉斯效应 (Clever Hans Effect)
*聚类错觉 (Clustering Illusion)
*鸡尾酒会效应 (Cocktail Party Effect)
*认知损耗 (Cognitive Depletion)
*认知失调 (Cognitive Dissonance)
*巧合 (Coincidence)
*承诺偏差 (Commitment Bias)
*复利 (Compound Interest)
*复杂适应系统 (Complex Adaptive Systems)
*确认偏差 (Confirmation Bias)
*合取谬误 (Conjunction Fallacy)
*相合性偏差 (Congruence Bias)
*合取谬误 (Conjunction Fallacy)
*保守倾向 (Conservatism) (Bayesian)
*保守倾向 (Conservatism) / 退缩偏差 (Regressive Bias)
*一致性偏差 (Consistency Bias)
*触染偏差 (Contagion Bias)
*语境效应 (Context Effect)
*对比错误反应倾向 (Contrast-Miscreation Tendency)
*对话偏差 (Conversational Bias)
*跨种族效应 (Cross-Race Effect)
*潜抑记忆 (Cryptomnesia)
*累积优势 (Cumulative Advantage) / 马太效应 The Matthew Effect) / 富人愈富 The Rich Get Richer
*好奇心倾向 (Curiosity Tendency)
*知识之祸 (Curse of Knowledge)
*数据挖掘错误 (Data Mining Error)
*资料窥视偏差 (Data Snooping Bias)
*决策疲劳 (Decision Fatigue)
*诱饵效应 (Decoy Effect)
*默认效应 (Default Effect)
*防御性归因假设 (Defensive Attribution Hypothesis)
*防御性决策 (Defensive Decision Making)
*职业病 (Déformation Professionnelle)
*宗派效应 (Denomination Effect)
*被剥夺超级反应倾向 (Deprival Superreaction Tendency)
*灾难短视 (Disaster Myopia)
*失望厌恶 (Disappointment Aversion)
*讨厌/憎恨倾向 (Dislike/Hating Tendency)
*错位效应 (Disposition Effect)
*领地依赖 (Domain Dependence)
*避免怀疑倾向 (Doubt-Avoidance Tendency)
*害怕风险 (Dread Risk)
*化学物质错误影响倾向 (Drug-Misinfluence Tendency)
*达克效应 (Dunning-Kruger Effect)
*时长忽视 (Duration Neglect)
*反身性 (Economic Reflexivity)
*伊斯特林悖论 (Easterlin Paradox)
*心血辩护 (Effort Justification)
*自我损耗 (Ego Depletion)
*自利偏差 (Egocentric Bias)
*同理心效应 (Empathy Gap)
*皇帝新衣综合征 (Eperor’s New Clothes Syndrome)
*禀赋效应 (Endowment Effect)
*艳羡/妒忌倾向 (Envy/Jealousy Tendency)
*艳羡 (Envy)
*承诺升级 (Escalation of Commitment)
*本质主义 (Essentialism)
*可评估性偏差 (Evaluability Bias)
*期望过大 (Exaggerated Expectation)
*自视过高的倾向 (Excessive Self-Regard Tendency)
*预期 (Expectations)
*预期偏差 (Experimenter’s or Expectation Bias)
*指数增长 (Exponential Growth)
*外部刺激偏差 (Extrinsic Incentives Bias)
*阴影效应偏差 (Fading Affect Bias)
*合成谬误 (Fallacy of Composition)
*频率谬误 (Fallacy of Frequency)
*单因谬误 (Fallacy of the Single Cause)
*错误因果关系 (False Causality)
*错误共识效应 (False-Consensus Effect)
*虚假记忆 (False Memory)
*歪曲历史 (Falsification of History)
*熟悉性假设 (Familiarity Heuristic)
*遗憾恐惧 (Fear of Regret)
*功能积极效应 (Feature-Positive Effect)
*流畅性假设 (Fluency Heuristic)
*聚焦效应 (Focusing Effect)
*预测错觉 (Forecast Illusion)
*福勒效应 (Forer Effect) / 巴纳姆效应 (Barnum Effect)
*框架效应 (Framing Effect)
*频率错觉 (Frequency Illusion)
*功能固着 (Functional Fixedness)
*基本归因错误 (Fundamental Attribution Error)
*赌徒谬误 (Gambler’s Fallacy)
*伽拉忒亚效应 (Galatea Effect)
*注视假设 (Gaze Heuristic)
*生成效应 (Generation Effect) / 自我生成效应 (Self-Generation Effect)
*搜索引擎效应 (Google Effect)
*群体迷思 (Groupthink)
*群体归因错误 (Group Attribution Error)
*群体极化 (Group Polarization)
*光环效应 (Halo Effect)
*累赘原理 (Handicap Principle)
*难易效应 (Hard-Easy Effect)
*霍索恩效应 (Hawthorne Effect)
*享乐适应症 (Hedonic Treadmill)
*羊群效应 (Herding)
*后见之明偏差 (Hindsight Bias)
*本土偏好 (Home Bias)
*敌对媒体效应 (Hostile Media Effect)
*热手谬误 (Hot-Hand Fallacy)
*房款效应 (House-Money Effect)
*幽默效应 (Humor Effect)
*双曲贴现 (Hyperbolic Discounting)
*意念动作效应 (Ideomotor Effect)
*受害者标签效应 (Identifiable Victim Effect)
*宜家效应 (IKEA Effect)
*被关注错觉 (Illusion of Attention)
*不对称洞察力错觉 (Illusion of Asymetric Insight)
*控制错觉 (Illusion of Control)
*外部因素错觉 (Illusion of External Agency)
*技能错觉 (Illusion of Skill)
*透明度错觉 (Illusion of Transparency)
*真相错觉效应 (Illusion of Truth Effect)
*有效性错觉 (Illusion of Validity)
*相关性错觉 (Illusionary Correlation)
*虚假相关 (Illusory Correlation)
*虚假模式识别 (Illusory Pattern Recognition)
*虚假优越感 (Illusory Superiority)
*无力关门 (Inability to Close Doors)
*动机引起的偏差 (Incentive-Caused Bias)
*应激超级反应倾向 (Incentive Super-Response Tendency)
*避免不一致性倾向 (Inconsistency-Avoidance Tendency)
*心灵感应 (Induction)
*受简单联想影响的倾向 (Influence-from-Mere Association Tendency)
*信息偏差 (Information Bias)
*信息过载 (Informational Overload)
*圈内人偏差 (In-Group Bias)
*群体内外偏差 (In-Group Out-Group Bias)
*样本大小不敏感 (Insensitivity to Sample Size)
*即时历史偏差 (Instant History Bias)
*意向处理错误 (Intention-To-Treat Error)
*网络过滤泡沫 (Internet Filter Bubble)
*内省错觉 (Introspection Illusion)
*倒错 (Inversion)
*非理性恶化 (Irrational Escalation)
*元月效应 (January Effect)
*杰文斯悖论 (Jevons Paradox)
*公平世界假设 (Just-World Hypothesis)
*康德式公平倾向 (Kantian Fairness Tendency)
*滞后效应 (Lag Effect)
*沃贝贡湖效应 (Lake Wobegon Effect) (see Overconfidence)
*大数定律 (Law of Large Numbers)
*规模报酬 (Law of Scale)
*小数定律 (Law of Small Numbers)
*少即是多效应 (Less-is-Better Effect)
*瞄准与锐化效应 (Leveling and Sharpening Effect)
*喜欢/热爱倾向 (Liking/Loving Tendency)
*喜爱偏差 (Liking Bias)
*限价订单效应 (Limit Order Effect)
*琳达问题 (Linda Problem) (see Conjunction Fallacy)
*列表过长效应 (List-Length Effect)
*风险极大—极小赌注偏差 (Longshot-Favorite Bias)
*合奏效应 (Lollapalooza Tendency)
*厌恶损失 (Loss Aversion)
*低波动性异常 (Low Volatility Anomaly)
*用锤子的人综合征 (Man With A Hammer Syndrome)
*心理账户 (Mental Accounting)
*单因接触效应 (Mere Exposure Effect)
*不用心 (Mindlessness)
*明斯基时刻 (Minsky Moment)
*误导信息效应 (Misinformation Effect)
*通道效应 (Modality Effect)
*货币幻觉 (Money Illusion)
*蒙提霍尔问题 (Monty Hall Problem)
*心境一致性记忆偏差 (Mood-Congruent Memory Bias)
*动机拥挤 (Motivation Crowding)
*道德风险 (Moral Hazard)
*道德许可 (Moral Licensing)
*道德运气 (Moral Luck)
*动机挤出效应 (Motivation Crowding Out Effect) (see Undermining Effect)
*损失厌恶短视 (Myopic Loss Aversion)
*犬儒主义天真 (Naive Cynicism)
*多元化天真 (Naive Diversification)
*现实主义天真 (Naive Realism)
*消极性偏差 (Negativity Bias)
*消极性效应 (Negativity Effect)
*轻忽机率偏误 (Neglect of Probability)
*网络效应 (Network Effect)
*接班人效应 (Next-in-Line Effect)
*噪声交易 (Noise Trading)
*常态偏差 (Normalcy Bias)
*非自主发明综合症 (Not-Invented-Here Syndrome)
*狂躁症 (Neomania)
*新闻错觉 (News Illusion)
*观察员偏差 (Observer Bias)
*观察者期望效应 (Observer-Expectancy Effect)
*[[奥卡姆剃刀|思维的惰性]] (Occam’s Razor)
*不作为偏差 (Omission Bias)
*后果偏差 (Outcome Bias)
*外团体同质性效应 (Outgroup Homogeneity Bias)
*过度自信偏差 (Overconfidence Bias)
*过度乐观倾向 (Overoptimism Tendency)
*过度考虑 (Overthinking)
*帕金森定律 (Parkinson’s Law)
*空想性错视 (Pareidolia)
*帕雷托法则 (Pareto Principle) (The 80/20 Rule)
*部分暗示效应 (Part-List Cueing Effect)
*交接权杖 (Pass the Baton) (We All Have To Die)
*巴甫洛夫联想 (Pavlovian Association)
*峰终定律 (Peak-End Rule)
*持久性 (Persistence)
*人格化 (Personification)
*说服力偏差 (Persuasion Bias)
*悲观主义偏差 (Pessimism Bias)
*图优效应 (Picture Superiority Effect)
*安慰剂效应 (Placebo Effect)
*规划谬误 (Planning Fallacy)
*多数无知 (Pluralistic Ignorance)
*购后合理化 (Post-Purchase Rationalization)
*启动效应 (Priming Effect)
*首因和近因效应 (Primacy and Recency Effects)
*拖延行为 (Procrastination)
*亲创新偏差 (Pro-Innovation Bias)
*投影偏差 (Projection Bias)
*假确定性效应 (Pseudocertainty Effect)
*皮格马利翁效应 (Pygmalion Effect)
*逆反心理 (Reactance)
*反应式贬低 (Reactive Devaluation)
*重视理由倾向 (Reason-Respecting Tendency)
*近因偏差 (Recency Bias)
*回馈倾向 (Reciprocation Tendency)
*启发式再认 (Recognition Heuristic)
*反射效应 (Reflection Effect)
*后悔 (Regret)
*代表性启发 (Representative Heuristic)
*资源枯竭 (Resource Depletion)
*管束偏差 (Restraint Bias)
*奖惩超级反应倾向 (Reward and Punishment Superresponse Tendency)
*趋均数回归 (Regression to Mean)
*代表性启发 (Representativeness Heuristic)
*莫名其妙效应 (Rhyme as Reason Effect)
*风险规避 (Risk Aversion)
*风险补偿 (Risk Compensation) (Peltzman Effect)
*风险偏移 (Risky Shift)
*整数效应 (Round Number Effect)
*帆船效应 (Sailing-Ship Effect)
*突显效应 (Salience Effect)
*满意法 (Satisficing)
*泡泡纱错觉 (Seersucker Illusion)
*稀缺性错误 (Scarcity Error)
*二级思考 (Second-Level Thinking)
*选择性偏差 (Selection Bias)
*选择性认知 (Selective Perception)
*自我控制 (Self-Control)
*自我增强传染偏差 (Self-Enhancing Transmission Bias)
*利己主义 (Self-Interest)
*自选择偏差 (Self-Selection Bias)
*自利偏差 (Self-Serving Bias)
*自利型归因偏差 (Self-Serving Attribution Bias) (see Self-Serving Bias)
*塞梅尔维斯效应 (Semmelweis Effect)
*衰老—错误影响倾向 (Senescene-Misinfluence Tendency)
*共享信息偏差 (Shared Information Bias)
*神枪手效应 (Sharpshooter Effect)
*相似性启发 (Similarity Heuristic)
*简单逻辑 (Simple Logic)
*简单,避免痛苦心理否认 (Simple, Pain-Avoiding Psychological Denial)
*模拟式启发 (Simulation Heuristic)
*事后效应 (Sleeper Effect)
*社会地位偏差 (Social Comparison Bias)
*社会期望偏差 (Social Desirability Bias)
*社会性懈怠 (Social Loafing)
*社会智力假设 (Social Intelligence Hypothesis)
*社会认同倾向 (Social-Proof Tendency)
*否认压制 (Squelch by Denial)
*现状偏差 (Status Quo Bias)
*刻板印象 (Stereotyping)
*次可加性效应 (Subadditivity Effect)
*主观验证 (Subjective Validation)
*沉没成本谬误 (Sunk Cost Fallacy)
*超级碗效应 (Superbowl Effect)
*迷信 (Superstition)
*幸存者偏差 (Survivorship Bias)
*情节偏差 (Story Bias)
*战略性误传谎言 (Strategic Misrepresentation)
*压力影响倾向 (Stress-Influence Tendency)
*游泳者的身体错觉 (Swimmer’s Body Illusion)
*系统公正化效应 (System Justification)
*最佳选择启示 (Take-the-Best Heuristic)
*德州神枪手效应 (Texas Sharpshooter Effect) (see Sharpshooter Effect)
*节省时间偏差 (Time-Saving Bias)
*泰坦尼克效应 (Titanic Effect)
*黑天鹅效应 (The Black Swan)
*好转前的恶化谬误 (The It’ll-Get-Worse-Before-It-Gets-Better Fallacy)
*小数定律 (The Law of Small Numbers)
*选择悖论 (The Paradox of Choice)
*平均指数 (The Problem with Averages)
*公地悲剧 (Tragedy of the Commons)
*品性归属偏差 (Trait Ascription Bias)
*土耳其错觉 (Turkey Illusion)
*讲废话的倾向 (Twaddle Tendency)
*基本归因错误 (Ultimate Attribution Error)
*单位偏差 (Unit Bias)
*不用就忘倾向 (Use-It-or-Lose-It Tendency)
*志愿者式愚笨 (Volunteer’s Folly)
*熟悉路线效应 (Well Travelled Road Effect)
*威尔·罗杰斯现象 (Will Rogers Phenomenon)
*赢者诅咒 (Winner’s Curse)
*劣于常人效应 Worse-than-Average Effect
*蔡加尼克效应 (Zeigarnik Effect)
*零风险偏差 (Zero-Risk Bias)
*零和启发 (Zero-Sum Heuristic)">>

返回[[思维模型|Thinking Models]]

<$button message="tm-close-tiddler">Close Me!</$button>
''念'',佛学称“一呼一吸是一念,一念之间有八万四千个烦恼”,念念清净才能够证到无量佛土皆严净,念静是通过定慧的法门。这回答了之前我的疑问:[[怎么达到定慧?|2018年01月09日 周二下午 05:32:52]] 那么什么是念?

念,是意识,是一个思维流。修佛要求“[[缘起性空,性空缘起]]” ,性空即念住或无念,念住不是念头断灭,而是不起思惟分别,念念常住清净自在,永远在定中。

''定'',是一种状态。常驻清静的状态。

这就是念和定的因果和果因关系。定,非空(什么都没有,都不想),而是一种专注。这是一种辩证,空即是满,满即是空。当专注了,思想被一种思想占有了,即满。这也是佛家所说的断念,念住,不起思维分别的意思。

那么什么是总持那?

''总持'',佛学中被认为是一种法门 <<ref [1]>>。总是“所有”的意思,持是“保有”。总持第一个是闻总持,听闻、见闻过了就不忘(是不是也是锻炼好记性的一个“法门”那?)。第二个总持是知总持,所知道的没有忘失。第三个是遇有任何疑难,自己会参透解决。这样定力坚固、慧力坚固,才可以得总持法门,才算总持。 

//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

---

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "即达到目的的一种方法,密宗所讲的陀罗尼。陀罗尼意译为“真言”、“总持”、“持明”、“咒语”、“密语”。 ">>

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[念楼学短]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[态度改变与社会影响]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[怎样学古文二十五讲]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
2018年01月18日周四下午09:24:30
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[思想的力量]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
思维系统1和2是一对兄弟,但是兄弟两个既互相帮忙,又互相掣肘。例如我们正聚精会神的思考一件事情,突然听到一声巨响,系统1一定会打断系统2的工作。

同样,其它身体方面的行为也会干扰系统2的运转效果和能力。例如,在跑步时心算出“23×78”的结果,这时肯定会停下脚步来。

这就是身体系统的能量分配问题。对于大脑来说,自我控制和认知努力是大脑工作的形式,自我控制需要自我能量损耗,必然导致系统2的良性运转,而控制思想和行为是系统2的任务之一。所以我们在决策的时候,自身自然而然的会选择或者分配输出最低消耗身体能量的解决办法,这就是人的惰性,或者惰性思维。

结论:
1、我们要将所有资源都用于手头上的任务才好;
2、降低自我损耗,达到心流效应  <<footnote "[1]" "并不是所有认知工作都令人厌恶,有时并不需要意志力的支撑,人们也能花很长时间和大量精力进行一项工作。心理学家米哈里·契克森米哈(Mihaly Csikszentmihalyi)将这种状态命名为心流。体验过心流的人将其描述为“一种将大脑注意力毫不费力地集中起来的状态,这种状态可以使人忘却时间的概念,忘掉自己,也忘掉自身问题。">>;或补充自我损耗,达到系统2良性运转,如自我损耗的影响能通过注射葡萄糖得到缓解。

2018年01月11日 16:47

补充:思维的惰性,其实从另外一个理论也可以证明--奥卡姆剃刀。
''奥卡姆剃刀'',又称“奥坎的剃刀”,拉丁文为lex parsimoniae,意思是简约之法则,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1287年至1347年,奥卡姆(Ockham)位于英格兰的萨里郡)提出的一个解决问题的法则,他在《箴言书注》2卷15题说“切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情’。”换一种说法,如果关于同一个问题有许多种理论,每一种都能作出同样准确的预言,那么应该挑选其中使用假定最少的。尽管越复杂的方法通常能做出越好的预言,但是在不考虑预言能力(即结果大致相同)的情况下,假设越少越好。

在自然科学中,奥卡姆剃刀被作为启发法技巧来使用,更多地作为帮助科学家发展理论模型的工具,科学方法中对简单性的偏好,是基于可证伪性的标准。较简单的理论比复杂的理论更好,因为它们更加可检验。

俗话说的“简单的解释通常是正确的”就是是源于奥卡姆的剃刀。

与奥卡姆剃刀相似的是[[萨顿定律|简单,简单,再简单]]。萨顿定律描述在医学诊断时,先考虑较明显、较可能确认的项目。

萨顿定律得名于银行抢匪威利·萨顿(英语:Willie Sutton),据说他在回答抢银行的原因时回复:''“因为钱就在这里。”''


//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
<<<
“你必须知道所有重要学科的重要理论,并经常使用它们。要全部都用上,而不是几种,大多数人都只学过一个学科的思维模型,比如说经济学,试图用一种方法来解决所有问题。你知道谚语所说:在拿着铁锤的人看来,世界就是一颗钉子。这是处理问题的一个笨方法。”
<<<

一切思维者都具有一种思维的结构,这个结构不是哪个人主观的,当然每个人的主观里面都有,但它不是主观的,而是思维本身内部固有的,任何一般可能的思维者都必须服从于这样一种结构。这样的结构他称之为先验的。(康德)

康德讲客观是由主观建立起来的,而他讲的主观又不是某个人可以任意违背的、可以抵消的,是先验地定下来的主观的东西,你要抛开是不行的。你只能按照这套主观的知识结构去进行认识,所以这套主观的结构对于主观的任意性构成了先验的限制。你只要是个理性的存在,这个理性就是一套固定的先天的结构,是不变的。


//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
<$list filter="[field:book_title[思考快与慢]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[[思考快与慢]]作者丹尼尔•卡尼曼为美国一名因展望理论 <<ref "[1]">> 的贡献获得2002年诺贝尔经济学奖的以色列裔心理学家。而《思考快与慢》讲的是在认知心理学  <<ref "[2]">> 和行为心理学 <<ref "[3]">> (行为科学 <<ref "[4]">>)  基础上大脑的工作机制 。

在书中,作者提出认知世界过程中“判断和决策”的两种行为反应模式:快思考---系统 1(系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。)和慢思考---系统 2(系统2将注意力转移到需要费脑力的大脑活动上来,例如复杂的运算。)。

书中作者只对这两种系统运行状态和行为做了刨析和展示,即它们之间的发生和联动、原因和结果。而从实用性角度,即解决办法,或者说训练性指导,并未给出什么解决方案,而解决反感需要自己判断哪些对自己有用,从而形成正确的[[思维框架|Thought Framework]]。

<<<
尽管系统2的运行体现在行动中,但自主运行的系统1才是本书的重点。我将系统1描述成自主而初始的印象和感觉,这种印象和感觉是系统2中明确信念的主要来源,也是经过深思熟虑后作出抉择的主要依据。系统1的自主运作诱发了极其复杂的理念模式,但只有相对缓慢的系统2才能按部就班地构建想法。我还描述了继而发生的系统2的环境条件,在此条件下,系统1中随性的冲动及其诱发的联想都会受到抑制。读过此书后,你会觉得这两种系统各有千秋,各司其职。
<<<

二者的运行条件和顺序:

<<<
系统1是自主运行,而系统2则通常处于不费力的放松状态,运行时只有部分能力参与。系统1不断为系统2提供印象、直觉、意向和感觉等信息。如果系统2接收了这些信息,则会将印象、直觉等转变为信念,将冲动转化为自主行为。
<<<


<<imageSlider  [[https://cl.ly/orTa/%E6%80%9D%E8%80%83%E5%BF%AB%E4%B8%8E%E6%85%A2.jpg]]    "//前五章的脉络图//">>

//2017年12月24日 下午 10:11:27//

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ <<footnotes "[1]" "是一个行为经济学的理论。例如,一个人展望(预期)能得到奖金 500 元,当他的决策让他得到奖金 500 元,他会觉得没什么;若他有办法得到多于预期的 500 元,多数人会审慎地考量这方法(决策)带来的风险,以免失去展望(预期)回报;如果相反,即使他有另一个比较安全,但让他少得100元奖金的办法(决策),那多数人会宁可冒较大风险,以获取展望(预期)回报。">>

<<footnotes "[2]" "人在接受信息输入和输出之间发生的内部心理过程。">>

<<footnotes "[3]" "主张心理学应该研究可以被观察和直接测量的行为,反对研究没有科学根据的意识。">>
''慢思考'',即系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。这种思考能力是与生俱来,并与其它动物本能一样。

<<imageSlider [[https://cl.ly/ouhG/Snipaste_2018-01-18_16-04-16.png]]    "//思考系统1和2运行机制//">>

由于系统1是本能性思考能力,所以其缺陷也就是系统性缺陷,如上图。要规避系统性思考缺陷,或者说避免直觉性错误和成见,而系统1又无法进行强行关闭,就需要自我控制,进行干扰系统1,而专注是有效手段。

系统2自身具有自我控制能力,例如情绪失控,系统2自动响应避免重大错误或者不礼貌的发生。

而注意力是有限的资源。由于专注,我们会忽视显而易见的事,也会忽视自己屏蔽了这些事的事实。

<<imageSlider [[https://cl.ly/osSh/%E5%BF%AB%E6%85%A2%E6%80%9D%E8%80%833.jpg]]    "//思考系统1和2属性和关系//">>

//2017年12月26日 下午 09:28:32//
<<<
总有一天会重新好起来。纵使我们今天怀着惘然若失,一筹莫展的心情,像半个瞎子似的在恐怖的深渊中摸索,但我依然从这深渊里不断仰望曾经照耀过我童年的昔日星辰,用从父辈们继承下来信念安慰自己:我们所遇到的这种倒退有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。——斯蒂芬·茨威格《昨日的世界》
<<<

<$details summary="《昨日的世界》" class="notification">
[img[https://cl.ly/qFjp/download/yestday.jpg]]
</$details>

我们所遇到的这种倒退(参见<<ref "[1]">>)
有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。谁都知道历史进化的方向是趋向进步的光明,可是历史的主角是人类,人性就是硬币的两面---恶与善,当历史的主角人性硬币恶的一面被掀开,历史就会停滞和倒退,历史的天空是灰暗的。人性也是易传染和延续的,就像感冒病毒,当环境适宜,人皆以病,唯有强壮着和逃避这种环境者得以幸免。所以,人类很难预测这种倒退和停滞,这种灰暗和阴霾的天空的时间会有多长,何时被结束。历史的经验教训,往往也是靠不住的,它只能对善者有效,对恶的惩戒微乎其微。因为,当权力的锤子在历史的主角手中时,他看什么都像钉子。

茨威格式的期冀是浪漫的--- --- 我依然从这深渊里不断仰望曾经照耀过我童年的昔日星辰,有点像中国文人的温柔---- --- 花儿只能在墙角悄悄的绽放和枯萎。茨威格选择了自我摧残式的枯萎,为了反对和强烈控诉法西斯对思想的专制统治,他与妻子双双服用镇静剂自杀--- ---——“出于自愿和理智的思考”,出于对他的“精神家园欧洲”的毁灭的痛心。

有信仰人格的文人在恶面前用恶的残缺--- ---浪漫--- ---反击恶;无信仰人格的文人要不选择妥协要不选择沉默,慢慢枯萎;恶的文人成为恶的帮凶和鼓吹手。小民,只能选择读书,痛苦中等待涅槃--- --- 我们所遇到的这种倒退有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。

2018年03月17日周六下午09:21:50

下载 : [[《昨日的世界》|https://www.asuswebstorage.com/navigate/s/32D5212A1006480CB4D27CB1426C89624]] (mobi格式)

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "[[有则改之,无则加冕]]">>
关于奥斯维辛集中营的影视作品蛮多,但是看相关的文本作品还是第一次。这本《奥斯维辛的小图书馆员》虽说是小说,然书中的人、事、物都是真实的,书后记部分补述了书中人物的现实原型和人生结局,所以也可以把这本书当作一本纪实文学来读,是对正史的延展性补充。

之所以选这本书来读,是因为书中关于书的故事。

<<imageSlider  [[https://one.rizi.me/Photos/webphoto/aosiweixin.jpg]]    "抵达奥斯威辛集中营,1944年5月">>


<<<
这不仅仅只是一部关于奥斯维辛历史的小说,同时也是一部关于阅读的小说。小说中提到的那些书始终推动着故事情节的发展。
<<<

在奥斯维辛集中营,每天都有成千上万人被送往毒气室,然后在焚尸炉化作浓浓黑烟,活着是这里人的唯一目标。
 <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" type=popup $state="image-buttons">

<<<
任何一位老囚犯给新来的囚犯上的第一课永远都是:清楚自己的目标——活着。先是几个小时,接着是一天,然后就可能是一个星期。就这样一直延续着,永远不要做大的计划,也不要有大的目标,仅仅就是每时每刻地活着。活着是一个动词,而且只有现在时。
<<<
</$appear>
然而在这人间地狱中,谁也不相信竟然存在着一个图书馆 --- 应该是世界上最小的图书馆吧,只有8本书(分别是:《初等几何》 《世界简史》《俄语语法》《精神分析疗法新思路》《好兵帅克历险记》),外加6本活体书(存在人脑中的书籍)。<$appear type=popup> 

<<< 
事实上,只有八本书,而且有几本还很破。但这些的确都是书。在这个如此黑暗的地方,人性如同他自己的身影一样黑暗,书的出现减少了阴郁的时光而增加了美好的时光。在这个灭绝的时代,语言的力量要远比机枪的力量大得多。就像是托着新生婴儿似的,蒂塔仔细地把书一本一本地放在自己的手上。

.....

他们拥有一个活体图书馆。好几位老师熟知一些文学作品,并把这些作品变成了自己的藏书,于是他们就会轮流去不同的班级给孩子们讲这些他们已经可以背诵出来的故事。
<<<
</$appear>

<<<
房间铺的是木地板,在一个角落,有一块板子是活动的。在那块板子的下面,挖了一个刚好放下这些书的坑,那里就是小图书馆。那些书刚好可以全部放在这个坑里,即使踩在木板上或者用手指敲打木板,都不会发出空空的声音,没有人会怀疑这下面会是一个小小的藏匿之处。
<<<


这个奇迹般的图书馆,成为奥斯维辛集中营地狱中的一片绿洲,一座避难所(毛姆:[[阅读是一座随身携带的避难所]]),为那些饥饿而懵懂着的孩子们提供了片刻的宁静,也为他们插上了一双天使的翅膀 --- 虽然最终这些孩子们大部分都被送进了焚尸炉化作黑雪飘在空中。小说的主人公蒂塔就是这个图书馆的管理员,每天负责秘密的保管和分发书籍,然而当时她只有14岁。小说的结尾,蒂塔依然在分发着书籍,这时她已经80岁了,分发的是她丈夫(同一个集中营的小男孩)写的关于奥斯维辛集中营的书籍。

书籍让人能更好的活下去。活着!

《奥斯维辛的小图书馆员》给我另外的启发是对恐惧和欲望的思考。恐惧和欲望对人来说都是最大的敌人,这两个敌人都拥有生存或者毁灭的力量,无边、无界、无形、无声。恐惧和欲望即是对立的敌人,有时候又狼狈为奸,相生,相克。极度的恐惧中(奥斯维辛集中营毒气室),就像在无边无际的黑暗中,只有把自己消失在黑暗中,融化在恐惧中,才会在黑暗中看清黑暗,即是光明。在极度的欲望中(逃出奥斯维辛集中营的想法),就像太虚幻境中的光明,只有心存恐惧,有所敬畏,才不至于走向自我毁灭,即是冷静。

恐惧和欲望的分界线是什么?我想是信仰。

//2018年10月01日周一下午10:39:03//
<ul>
<$list filter="[tag[想读]!sort[created]]">
    <li>
	  <$checkbox tag="Done">  <$link><$view field="title"/></$link> @@color:gray;作者:<$view field="author"/>@@</$checkbox>

<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
 <$list filter="[<currentTiddler>days[-30]!days[-7]]"> @@color:orange;^^近期^^@@</$list>
<$list filter="[<currentTiddler>days[-356]!days[-30]]"> @@color:gray;^^最近^^@@</$list>
</li>
  </$list>
</ul>





<$list filter="[field:book_title[我书架上的神明]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
今天把鲁迅和莫言部分看完了。虽说二人生在不同时代,但异同不殊。

也许把二人不能相提并论,但既然遇到了也不自觉的又了比较。

鲁迅和莫言皆出身贫寒,或者说出生在家道没落时期。鲁迅家里原为绍兴鲁镇富农,诗书耕读之家,祖父乃七品京官,后家境逐败,周氏子孙卖房卖地度日,家族七零八落一派败家之象,所以才有了鲁迅走出家门,急切的想脱离鲁镇。鲁迅笔下的鲁镇和小说里以鲁镇乡人为原型的小说人物,除了三味书屋、乌篷船和少年闰土点滴儿时美好记忆,更多的是奴性、麻木和愚昧。莫言祖上也颇殷实,被划分为中农,继而被划分为富农,从此也日渐日子贫寒和地位卑贱,读书不得,当兵不得,迫使莫言走出去矢志不移的决心和努力。莫言作品的内容大多也取材之他走出去的那片土地--- --- 高密东北乡,尽管莫言以魔幻笔法书写,但原型皆乡土乡亲,内容到处充满了疾苦、饥饿和卑微。鲁迅和莫言的成长小环境决定了其作品主题和人物秉性。

而二者的大环境迥异,决定了其作品的高度和历史价值和地位。鲁迅的年代是自由的,思想肆意漫长的时代,国家处在新旧交替之际、世界处在分化和殖民时期。思想和主义滋生的温床给了鲁迅探究新旧中国救亡图存的空间,维新和革命的震荡给了鲁迅以笔为刀的阵地,站在时代的十字路口,“彷徨”和“呐喊”的力量成为了那个时代的最强音。而带着饥饿和卑微走出去的莫言,只为了探究一条吃饱饭有出息的路,在党和国家军队体制下的他,什么都没有的人唯有想象力促成的写作才是一条成本最低的捷径,当然这个想象力也需要划定一个圈--- --- 体制允许之内,这是时代的紧箍咒,这也是莫言获得诺贝尔文学奖受到不啻和争议之处,是他作品高度的天花板。莫言得知获奖消息的当天有记者问他最想做什么,莫言说“我想吃顿饺子”。也许是莫言幽默之词,也不妨可以说成是“我们吃顿饺子来庆祝吧”。

2018年02月05日周一下午11:18:11
经历平发捻叛乱,李鸿章上位,成为朝野中坚,继而推洋务以维新,建立北洋水师、兴造实业。甲午年一场中日海战又使李鸿章陷入一次内外交困漩涡,内承失责诽谤之议,外抗侵华扰华之压。成亦李,败亦李。梁启超如下总结其过:

<<<
平心论之,李鸿章诚有不能辞其咎者,其始误劝朝鲜与外国立约,昧于公法,咎一;既许立约,默认其自主,而复以兵干涉其内乱,授人口实,咎二;日本既调兵,势固有进无退,而不察先机,辄欲倚赖他国调停,致误时日,咎三;聂士成请乘日军未集之时,以兵直捣韩城以制敌而不能用,咎四;高升事未起之前,丁汝昌请以北洋海军先鏖敌舰,而不能用,遂令反客为主,敌坐大而我愈危,综其原因,皆由不欲衅自我开,以为外交之道应尔,而不知当甲午五六月间,中日早成敌国,而非友邦矣,误以交邻之道施诸兵机,咎五;鸿章将自解曰:量我兵力不足以敌日本,故惮于发难也。虽然,身任北洋整军经武二十年,何以不能一战?咎六;彼又将自解曰:政府掣肘,经费不足也。虽然,此不过不能扩充已耳,何以其所现有者,如叶志超、卫汝贵诸军,素以久练著名,亦脆弱乃尔,且克减口粮盗掠民妇之事,时有所闻,乃并纪律而无之也,咎七;枪或苦窳,弹或赝物,弹不对枪,药不随械,谓从前管军械局之人皆廉明,谁能信之,咎八;平壤之役,军无统帅,此兵家所忌,李乃蹈之,咎九;始终坐待敌攻,致于人而不能致人,畏敌如虎,咎十;海军不知用快船快炮,咎十一;旅顺天险,西人谓以数百兵守之,粮食苟足,三年不能破,乃委之于所亲昵阘冗恇怯之人,闻风先遁,咎十二。此皆可以为李鸿章罪者。
<<<

然梁启超也给出了甲午之败真正的原因:

<<<
吾于中日之役,固一毫不能为李淮恕也,然特患夫虚憍嚣张之徒,毫无责任,而立于他人之背后,摭其短长以为快谈,而迄未尝思所以易彼之道,盖此辈实亡国之利器也。李固可责,而彼辈又岂能责李之人哉?
<<<

对此种败象,最典型的例子:

<<<
乃至最可笑者,刘公岛降舰之役,当事者致书日军,求放还广丙一舰,书中谓此舰系属广东,此次战役,与广东无涉云云。各国闻者,莫不笑之,而不知此语实代表各省疆臣之思想者也。若是乎,日本果真与李鸿章一人战也。以一人而战一国,合肥合肥,虽败亦豪哉!
<<<

唯是,西方媒体则有“日本非与中国战,实与李鸿章一人战耳”之评论。

甲午之后,李鸿章本可激流勇退,可当时清朝已经完全陷入群狼之围,李又不得不担起外交之任,合纵连横,以图救大清存亡之大义。梁启超对李之外交的评价:

<<<
李鸿章之外交术,在中国诚为第一流矣,而置之世界,则瞠乎其后也。李鸿章之手段,专以联某国制某国为主。而所谓联者,又非平时而结之,不过临时而嗾之,盖有一种战国策之思想,横于胸中焉。观其于法越之役,则欲嗾英德以制法;于中日之役,则欲嗾俄英以制日;于胶州之役,则又欲嗾俄英法以制德。卒之未尝一收其效,而往往因此之故,所失滋多。胶州、旅顺、大连、威海卫、广州湾、九龙之事,不得不谓此政策为之厉阶也。
<<<

按住葫芦起来瓢。在一朝之末世,力挽狂澜,济世救国,非一人之力能为之。李之外交结果尽管悲惨,可李可谓是呕心沥血,直到生命在最后一刻尚与俄罗斯周旋。

<<<
至是而李鸿章病且殆矣。鸿章以八十高年,久经患难,今当垂暮,复遭此变,忧郁积劳,已乖常度。本年以来,肝疾增剧,时有盛怒,或如病狂,及加以俄使,助天为虐,恫喝催促,于邑难堪,及闻徐寿朋之死,拊心呕血,遂以大渐,以光绪二十七年九月廿七日薨于京师之贤良寺。闻薨之前一点钟,俄使尚来催促画押云。卒之此约未定,今以付诸庆亲王、王文韶。临终未尝口及家事,惟切齿曰:可恨毓贤误国至此。既而又长吁曰:两宫不肯回銮。遂瞑焉长逝,享年七十八岁。
<<<

清国乱世依然,而李亦长辞。盖棺而论定,梁启超给李鸿章的最后评价是:

<<<
吾欲以两言论断之日曰:不学无术,不敢破格,是其所短也;不避劳苦,不畏谤言,是其所长也。呜呼!李鸿章往矣,而天下多难,将更有甚于李鸿章时代者,后之君子,何以待之?
<<<

虽然梁启超给了李鸿章很中肯的评价,但同时也给出了一个客观的分析,在清末强弩之末之末世,而李鸿章又是在野朝官中最有行动力之人,李鸿章虽然不是最好的,可是没有了李鸿章在当时可能会更糟。所以,梁启超才有了那著名的诗句:

<<<
九州生气恃风雷,万马齐喑究可哀 我劝天公重抖擞,不拘一格降人才。
<<<

2018年02月16日周五下午09:28:38
<$list filter="[field:book_title[我在现场:性社会学田野调查笔记]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''我的应许之地:流浪放逐的犹太人''

世界上有两个流浪民族,吉普赛人(又称波希米亚人)和犹太人。但又是两种截然不同的流浪,前者是具有浪漫情怀的逐食而居,驾着大篷车载歌载舞;后者是血和泪的苦难放逐,伴着的却是驱赶和屠杀。犹太人一遭放逐就是上千年!就像浮萍,随波而流,千年来不停的寻找着可以生根发芽的应许之地。
《我的应许之地》,就是以色列作家阿里•沙维特通过记述家族的苦奈历史,展现了犹太人的苦难放逐和寻找应许之地的自我救赎历史。

> 这本书讲述一个以色列人的个人旅程,他因经历席卷家乡的、戏剧性的历史进程而陷入深深迷惘。跨越时间和空间,这是一个土生土长的以色列人对国家更广泛意义的探索。通过家族历史、个人历史,以及深度访谈,我试图描述以色列的大历史,解决更深层次的以色列问题。一个世纪以来,我的国家发生了什么,让我们处于现在的境地?是什么导致了这一切?我们做错了什么?我们将走向何方?我深深的焦虑是否有根据?我们的犹太国家是否真正处于险境?以色列人是否陷入了绝望的悲剧?我们是否能复兴和救赎自我,挽救我们深爱的土地?

而对我这个东方大民族人来说,在我对犹太历史有限的了解情况下,我知道犹太人是一个优秀而又聪明的人类族群,出现了诸多影响人类的明星人物,诸如门德尔松、马克思、弗洛伊德、马勒、卡夫卡以及爱因斯坦。这些犹太人的思想,几百年来,对现代欧洲乃至世界产生了至关重要的作用。和作者阿里•沙维特不同,我想弄清楚为什么在这个星球上却没有他们的生存之地?是宗教原因?民族主义?国家主义?在犹太人寻找自我救赎过程中,这个族群表现出了什么优秀的人类品质?我的应许之地之于国家,对一个族群来说有多重要?国家主义和民族主义又如何平衡?人类何以不能杂居?......// 2017.7.5//

<<<
”德里详细解释道,“东方犹太人的文化建立在三个支柱上:社区、会所以及父权。父亲是非常强大的——太强大了。他是支撑整个家庭的人,是整个家庭的王。他告诉他的妻子应该做什么。他告诉他的孩子学习什么、如何为人处事。即便在现代化的时代,即便受到了法国人和英国人的影响,父亲和拉比仍然保持着主导地位。宗教、传统和父权,使东方犹太人得以保存并延续1 000年。我们没有经历欧洲风格的世俗化。我们没有经历西方的启蒙运动以及宗教反抗运动。我们过着宗教、传统以及初始现代化相融合的生活。我们仰望拉比,敬畏父亲,这样,我们才以一个社群的形式幸存下来。”
<<<

<<<
“然后开始了灭绝行动(Actions)。隔离区被分阶段清理,每一次是不同的捕杀。我记得我们自己被追捕的情形。母亲、艾达和我在一个类似岩洞的地洞里躲了三天,其他几个人和我们躲在一起。与此同时,外面的隔离区正进行着大捕杀。我从一道地缝里窥见那场捕杀。我看见男人们被枪杀,孩子们被枪杀。我是一个躲在地底下的六岁的孩子,而我透过一条缝看见别的藏在树顶的孩子被开枪杀死并掉在地上。 “我根本不能用言语描述我的情感。我成长在一个井然有序的世界,一个殷实的欧洲中产阶级的家庭。然后,五年的极乐之后,一夜之间,整个世界轰然坍塌。我们的神圣被践踏了。我们的自然守则被颠覆了。而这一切都发生在隔日之间。在隔离区,一个人失去了他的人权基础,以及他的身份。他不再是人,我不再是人。而在这个坍塌之后的世界,想要生存下去便要付出全部的代价。 “第一次行动过后又来了第二次。那是一个炎热的夏天,德国人又开始捕杀犹太人。那是一场真正的捕猎,就像猎狐狸或者猎兔子一样。然后命令下来说没有工作许可的人都要在隔离区一个指定的地点集合。我的母亲和姐姐去了。我记忆中,这仿佛是昨天发生的事。我记得,我的姐姐跟妈妈说:我们还年轻,我们会找到工作,我们会活下去的。她们知道,她们要离开我了。她们知道,只有上帝知道会发生什么。但是,她们不想吓着我。而且,她们也心存盼望。她们相信她们会回来,而我也一样。我甚至没想过她们不能回来,或者,我会再也见不到她们。她们拥抱我,亲吻我,把我留给我的婶婶。我看着她们离开,越走越远,越变越小。 “我的婶婶拼尽全力弥补母亲的缺失给我留下的遗憾。我的叔叔极其足智多谋,他把我们从隔离区中救了出来。尽管叔叔婶婶努力地安慰我,但是,从母亲和姐姐离开的那一瞬间,我就是独自一人了。从7岁开始,我没有跟任何人谈心。我知道,我必须靠自己活下去。虽然我只是个孩子,我知道,我不能依靠任何人,无法向任何人求助。这是一种完全孤独的生活。 “在接下来的几个月里发生了奇迹般的事情。我的叔叔在里沃夫找到一位房主,他曾经是波兰军官,愿意帮助犹太人。在波兰当时糟糕的反犹太气氛下,这个概率是1%。还有一个工人阶级的家庭也帮助了我们,这两个家庭救了我们。我们伪造的证件上说我们是雅利安人,是波兰的天主教徒。所以,我们没有被捕,婶婶还教了我天主教的故事及祷告词。至关重要的是让邻居们看到我们像天主教徒一样地生活。渐渐地,这不再是一个伪装。我喜欢上了这一切:复活节,圣诞节,圣诞礼物。耶稣的故事,马利亚的塑像。天主教教义一种精神支柱。你不需要像犹太人或者新教徒一样独自奋战。耶稣为你而牺牲了他自己,而玛利亚时时刻刻为你守望,你求她来拯救你。而当身为孩子的你处在一场惨绝人寰的战争中,身边是一场大屠杀,你的父亲死了,你的母亲也死了,这时候,你非常容易被引诱相信这一切,你希望这会拯救你。你会跪在圣坛前,说着每一个天主教孩子说的话。 “战后波兰的反犹太主义十分可怕。尽管纳粹不在了,你仍然能够在每条街道的拐角处嗅到对犹太人的痛恨。我记得一个女人对犹太人叫嚷着:‘渣滓!你们从洞穴里出来啦,真可惜希特勒没把你们赶尽杀绝。’我记得,从集中营里返回的犹太人隐藏他们的身份,一旦被曝光,他们就被诅咒和暴打。不断传来谣言说战后还会有大屠杀。真是再明显不过了:犹太人在波兰没有未来。在经历过这一切,目睹一切之后,我们知道,我们再也不能做犹太人了。我们必须更换我们那旧的、被咒诅的身份。

//( {{!!modified}})//
[[我书架上的神明]]中百位知识分子“秘密书架”整理如下。可以这么说,以下书籍是这百位知识分子的学术基础,夸张一点说,正是因为这些大作的存在,才有了这些后人的学术成就,或是给了后人学术的奠基,或成为后人学术的指路明灯,或给后人以醍醐灌顶的启发。更甚者,正如书中一位作者所说:

<<<
“每种学科的重要著作是很少的,其他著作不过是把这少数著作里说得更充分而清楚的话加以重复、冲淡和损害罢了……”
<<<

对于我辈民间读书者,看这个书单多少也能看出也许端倪来。除了自然科学,社会科学领域并无多么深不可测而至于对之顶礼膜拜,而那些真正的文思哲经大神并不常有,几十上百年才会有那么一小撮,其它的无非是对这些大神大作枝枝蔓蔓的解读和再探究,有一部分甚至是在装神弄鬼、故弄玄虚、东施效颦和沽名钓誉。 只要您在某方面有兴趣,并具有一定的基础阅读(下面的书或某一领域的奠基之作),您也可以成为民间学者。

//(注:排名不代表权重,仅为整理时间,所列书目仅为书中被大部分人所提到的,并非全部。)//

<$details summary="文化·文学 领域" class="notification" open="no">


# 	《红楼梦》
# 	《金瓶梅》
# 	《三国演义》
# 	《唐诗三百首》
# 	《论小说与小说家》伍尔芙
# 	《约伯记》
# 	《卡拉马佐夫兄弟》[俄]  陀思妥耶夫斯
# 	《罪与罚》 [俄] 费奥多尔·陀思妥耶夫斯基 
# 	《老人与海》 [美]海明威
# 	《生命中不能承受之轻》[法]昆德拉著
# 	《约翰·克利斯朵夫》 [法]罗曼·罗兰著
# 	《战争与和平》 《安娜·卡列尼娜》托尔斯泰
# 	《钢铁是怎样炼成的》,[苏]奥斯特洛夫斯基
# 	《牛虻》 [英]伏尼契
# 	《悲惨世界》雨果
# 	《红与黑》 [法]司汤达
# 	《管锥编》 钱钟书
# 	  《中国文化要义》梁漱溟
# 	《愤怒的葡萄》 [美]斯坦培克 
# 	《美丽新世界》 [英]赫胥黎著
# 	《麦田里的守望者》[美]塞林格
# 	《蝇王》戈尔丁 
# 	 《混乱的图书馆》 博尔赫斯
# 	 《寻找家园》高尔泰
# 	鲁迅全集
# 	汪曾祺全集
# 	王朔作品
# 	金庸作品
# 	王小波作品
#      还珠楼主作品
</$details>



<$details summary="思想·哲学 领域" class="success" open="no">

# 	孟子著作
# 	老子著作
# 	孔子著作
# 	《宗教哲学》 [英]约翰·希克著
# 	《西方哲学史》 罗素
# 	《哲学主义的历史》 雷戈
# 	《圣经》
# 	《哲学研究》  [奥地利] 路德维希·维特根斯坦 
# 	《逻辑哲学论》 [奥地利] 路德维希·维特根斯坦 
# 	《忏悔录》卢梭
# 	《中国哲学简史》冯友兰
# 	《逻辑学》 黑格尔
#      《哲学主义的历史》 雷戈
</$details>


<$details summary="美学·艺术 领域" class="warning" open="no">

# 《艺术的故事》[英]贡布里希著
# 《美学历程》李泽厚 
#《艺术哲学》 [法]丹纳著,傅雷译 

</$details>

<$details summary="历史 领域" open="no">

# 《史记》司马迁
# 《历史的观念》 [英]柯林武德(R. G. Collingwood)
# 《历史学的理论和实际》 贝奈戴托·克罗齐(Benedetto Croce)
# 《史学家:历史神话的终结者》 埃里克·霍布斯鲍姆(Eric Hobsbawm)
# 《历史研究》 [英]汤因比 
# 《中国历代政治得失》 钱穆
# 《国史大纲》 钱穆
# 《历史的起源与目标》 [德]雅斯贝斯 
# 《菲利普二世时代的地中海和地中海世界》 [法] 费尔南·布罗代尔 
# 《万历十五年》黄仁宇
# 《柳如是别传》陈寅恪
# 《中国史学名著》钱穆
# 《历史与思想》 余英时
#《中国古代思想史论》/《中国现代思想史论》 李泽厚

</$details>

<$details summary="社科 · 政经
 领域" class="notification" open="no">

# 	《乡土中国》 费孝通
# 	《社会契约论》 卢梭
# 	《论美国的民主》托克维尔
# 	《当知识分子遇上政治》 马克•里拉
# 	《论美国的民主》托克维尔
# 	《20世纪的两位知识分子:萨特与阿隆》 法· 西里奈利
# 	《鲁莽的心灵:政治中的知识分子》 美 ·里拉
# 	《通往奴役之路》 哈耶克
# 	《所谓的知识分子》 保羅.約翰遜
# 	《资本论》 马克思
# 	《光荣与梦想》  [美] 威廉·曼彻斯特 
# 	《旧制度与大革命》[法]托克维尔
# 	《存在的勇气》 [美] 保罗·蒂利希
# 	 《反抗死亡》贝克尔
# 	《基督新教的伦理与资本主义精神》 [德]马克斯·韦伯 
# 	《自私的基因》  [英]理查德·道金斯
# 	《文明的冲突与世界秩序的重建》 [美] 塞缪尔·亨廷顿
# 	《一九八四》  [英] 乔治·奥威尔
# 	《动物农场》 [英]乔治·奥威尔
# 	《自由选择》 [美]弗里德曼夫妇
# 	《卖桔者言》 张五常
# 	《国富论》 [英]亚当·斯密
# 	 《经济解释》张五常
#       《毛泽东选集》

</$details>

(待补)
四年一届的世界杯狂欢已经进入四强决赛阶段。跟着看了几场 --- 我不是严格意义上的球迷,渐入佳境,看出不少门外汉的道理。

世界杯的冷门和进化。尽管平时不怎么看球,对一些老牌球队和球星还是耳熟能详,例如德国、巴西;C罗、内马尔。然后这届世界杯一些老牌早早的收拾行李回家了,德国对未能进入八强赛,巴西也未能进入四强赛。这不免让这些球队的球迷失望和流泪,我作为一位外围观赛者 --- 这个词形容我比较合适 --- 看到的却是一些年轻球队的表现和成绩,例如平均年龄偏小的法国队,还有日本队。这或许就是自然规律,如果换句互联网界常用的话,这就是消费升级。不破不立,不立不破。

民族主义和全球性。看台上山呼海啸的呐喊助威,黯然伤神的悲伤眼泪,进球的一刻淋漓尽致的表现了足球的民族性一面。不管遥远的非洲小国,还是欧洲中心的老牌帝国,这一刻都被小小的一颗圆球凝聚起来,没有人组织,也没有人煽动,完全是一种无政府主义的民族性。而联赛确是另外一种形态,少了民族性,是一种完全的世界性。

足球之所以好看。这个问题可能有不同的看法,准球迷可能更多关注地是比赛本身或球星,是一种沉浸式的娱乐。几场球跟着看下来,吸引我的是足球的对抗的战术性、赛场风云变化的知与未知。博弈的最终目的是胜出,而博弈的策略则是迷人的,个人和团体、协作与对抗、进攻和防疫,体力和智力、生理和心理,这一对对的矛盾共同体,怎么才能在规定的时间博弈胜出,可能是人类除了生与死的博弈之外,足球是最理想的博弈试验场了。

足球和中国足球。足球分两种:足球和中国足球。

//2018年07月08日周日下午03:56:53//

量变质变和阴谋论。 任何量变到一定程度一定引起质变。四年一届的世界杯应该是在这十几天内参与人最多的世界性事件,这无疑蕴含着巨大经济价值,所以就有了博彩或者说赌球。上面我提到世界杯好看的一个原因是充满了知与未知,也就是具有一定的变数,这就给赌球者提供了足够的想象空间。还从量变到质变的角度思考,当一场比赛参与赌球的资金额足够大的时候,一定引起足球比赛本身的质变,庄家一定干预结果,也就是我们所说的黑幕。例如德国和巴西这两个老牌球队爆冷出局,我们从阴谋论的角度考虑,事实也是可以理解的。


2018年07月09日周一下午04:16:10
<$list filter="[field:book_title[我读]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="我读:温一壶月光下酒"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[我读:温一壶月光下酒]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[img[https://d.pr/FREE/5CsFgr+]]

* 3.30 第一天就戒烟失败,吃完饭就想抽一支。好吧,我妥协一下,慢慢降量戒烟。

*3.31 昨晚事实上不想抽烟,身体无任何快感,而心理上念念不忘。心理战胜了物理需求。还有今天早上,同样的感觉。而饭后一支烟,心理和身体都能有一直飘然的化学反应。那么,第一步先把物理部分去掉,可能会减少三分之一。

*4.1 吸烟除了心理上和身体上之外,环境的因素之于戒烟也是至关重要的。我喜欢在打电话时候抽烟,只要电话不停,烟似乎一直就想在手。这是和一个朋友学会的,不过他已经成功戒掉了。所以,戒烟另外一个关键就是注意特殊环境的诱发。如果在关键节点上卡位 ---  如饭后和电话时,应该离成功接近一步。

*4.2 环境,还是环境。环境的诱发因素是至关重要的。除了后发一支烟是生理,是内因,其它的 --- 诸如环境等诱发因素都是外因。内因难治,而外因容易去除。但是事实上大部分所抽的烟皆是外因条件发生的,占三分之二。这就是习惯的力量,在某种环境和条件一下不由自主的动作习惯。这容易戒掉! 

*4.4 又是环境。另外一个至关重要的环境是独处和思考。[[前天看到一位民国文人|爱美人喜华服耽美食好文艺之一]]极其青睐并极力赞扬抽烟环境中那袅袅的细烟对思维的延申是多么的有用,甚至认为抽烟加速了人类文明的进步,至而还鼓励偶尔也可以抽一支鸦片来刺激思维。现在来看,这是何等的郁闷。环境的营造是重要,但是更重要的是肚子里有没有货,什么样的货色。那袅袅的轻烟其实是一个假象的环境,一种脑中意向。换成一杯清茶,一朵插花,一样可以达到意象的力量。所以,抽烟环境的内核其实是一种假象。

<<<
假如把文明史与吸烟发明之日期相较,立刻可以看出人类文明的进步,在吸烟史前是何等迟缓?而在史后是何等的迅速呢? 假如自卑一点,或者可以说客观一点来说,人类不过是一部像钢琴一般的乐器,而烟草乃是音乐家。谁能够证明,所有人类文化不是烟草在人的乐器里奏出来的曲调?([[民风野趣幽然醉]])
<<<

*4.5 文人的趣味总是自以为是,不管好坏,皆宜自己的好恶而标榜,虽然自己在戒烟,但是我还是认为这种标榜就是一种恶趣味。这位老兄 --- 民国文人徐訏 <<footnote "[1]"本名徐传琮,字伯𬣙,著名作家、教授,以写作小说闻名,并以高产著称。林语堂认为徐𬣙与鲁迅是20世纪中国最伟大的作家,对中国新诗一向没有好评的他赞誉徐𬣙是唯一的中国新诗人。">> 给抽烟找出了至尚理由:

<<<
用功一点人可以去算计,科学家哲学家文学家政治家外交家等,凡是有才干有能力的人,不吸烟者要是有一千分之一,那才是咄咄怪事!女子在文化上少贡献,我不相信会不是少吸烟之故,女诗人李清照如果肯多多吸烟,那她的诗词必能更光耀万丈,不会只取材于香炉之烟雾上面的!

烟在一方面是助人以进取的精神,他方面则是给人以疲倦的安慰。她在一方面是起科学的作用,他方面是收艺术的功效的。凡名利情场上的失意者,可以此为安慰,而得意者也可以助其得意。
<<<

*4.8 比之前少抽很一些了。之前记录的这些闲言碎语,意义在内容之外 ---  加固了要戒掉的信念,而其环境诱导等等的致因知道了又能怎么样?如果没有一个强烈的信念,还是起不到作用的。这就像之前流行的一本书,100天养成一个习惯,习惯就是一些规律性的坚持,就像现在读书和写读书笔记,坚持了几年,已经变成习惯了,一天不读不写,感觉今天好像还没有过完。戒烟一样,加强信念,变成习惯。久之,则已。

* 4.11 这两天记录少了,抽烟多了。原因有二:一是工作原因,顺和不顺都有借烟烧心头块垒之实;二是没有了戒烟之紧迫感。如若有箭在铉上之感,我想会好一些吧。
昨晚看[[雅记清词写流韵]],温一如忆顾曼殊一文《曼殊逸事》载顾也是个烟鬼:

<<<
曼殊言动,不假矫揉,自然诙诡;每令人捧腹解颐,有东方淳于之风。性嗜雪茄,初抵东京时,一日囊空,至敲落金齿,付质以买吸之。每于批欧美小说中,有雪茄者,辄批云:“雪茄!又是雪茄!”
<<<

顾曼殊可真是个瘾君子,敲断牙齿为销魂。
<span title="所罗门之歌"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[所罗门之歌]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!! 批判性阅读的策略

!!! 在阅读的时候问你自己如下的问题:

#你正在阅读的东西的主题是什么?讨论了什么问题?
#就上面的问题,作者得到了什么结论?
# 让作者产生这些说法和想法的理由是什么?作者正在用事实、理论还是信念?
"""
事实可以被证实
理论可以被证明,而且不会被事实弄混淆
观点则可能基于也可能不是基于有力的推理
信念自然是没有被证明的

作者是中立的用词还是感情用词? 
批判性阅读的读者会跳出文字来看推理是否清晰
应明白你为什么接受或不接受作者的论据

"""

!! 批判性思考者的特点

"""
他们对自己是诚实的
他们拒绝做假
他们会克服混乱
他们会提出疑问
他们会根据证据做出判断
他们会寻找不同事物间的联系
他们在心智上是独力的
"""
//(Bloom’s Critical Thinking/Questioning Strategies )//
年后一段时间一直忙着为项目融资,通俗的说是与VC机构打交道找钱。虽然之前也有类似的经历,但是随着环境的变化和时间的推移,这次外面融资经历还是收获和感叹颇多。

''不要抱任何幻想和臆测''

不管是对自己的项目也好,还是和VC们沟通、谈判,不要抱任何幻想,做最坏的打算,做尽可能的准备和努力。

对项目要科学的评估,用数据或者自己试错的经验进行冷静而客观的分析,这样对己对人都有一个明确而清晰的认识。由此,则可能做到心中有数,不会被市场裹挟,不会被投资商的冷眼或挑剔所左右。

做最坏打算才不会有最大的失望。情绪是容易传染的,所以尽量别被外界所干扰。

''不要盲信投资公司人员''

投资公司公司的结构(基金-投资公司-投资代理人-Fa),决定了您接触的谈判人员 --- 除非是具有一定的行业经验或多年的一线工作经验的实战派,大部分你接触的人员都是从评估模型和市场相关项目数据做出的评判,他们的行业认识和经验并不比您多和深入。所以,不要被供求关系的不平衡而对其“高看”,事实上许多投资经理只是科班出身一两年的小青年而无任何实际项目经验。看人,更不用深究,他们大多数人被社会世故所左右,所谓标准都是硬性的那几条 --- 和大部分相亲差不多,不要想着可以遇到什么伯乐。

以上的基本现状就决定了您接触的大部分人员事实上并不能给您一个有效的判断或有效的信息反馈。事实上,大部分也不会给您什么反馈。即便是在见面会上,他们所针对的问题和做出的一些判断,都很泛泛 --- 用一定的框架思维做出的硬性几条标准。当然,也不可否认,极少数的投资人具有非常好的职业素养和人格魅力,他们不仅谦逊的提出自己的提问,还会职业的给出一些参考意见和建议。

''“小鬼”当道 ''

伯乐不常有,决定了您大部分遇到的是一般办事人员 --- 投资经理或项目分析师等底层职员,由于这些人的眼光、能力和资历所限,大部分项目都会被卡在这里,包装好的项目或具有极其漂亮的背景或数据及现金流好的项目才有可能顺利通过他们这一关。所以,如果您有机会,还是尽量找投资高层 --- 投资总监、合伙人、创始人,至少您的项目“死”的其所。

''内功第一''

创业者在寻找资本,投资方在找投资回报率高的项目,双方的机会成本都非常大的。所以,从项目的角度,他们都是外因,项目融资成败关键在于自己,是内因。好的项目是投资商求着您要求跟进的。这就要求把内功修炼好。

所谓的内功,有几个关键性因素:项目商业逻辑(也就是项目本身)要通,至少需要被您验证过;团队要精炼高效,对早期项目来说,人比事更重要;最后,运气!不要相信哪些所谓的成功项目报道,连奥巴马都说自己当上总统是运气,那些事后英雄多半都是忽悠或者骗子(多看几本书就知道,真正的大家怎么回答这个问题的)。我说的运气细分可能的话包括几个因素:天时、地利、人和。也就是在正确的时间地点,您作对了正确的事,这就是运气。

未尽待补。

PS,积累了些许资源,对其它创业者也许有用,欢迎[[交流|About]]。

2018年03月19日周一下午21:40:50
@@.note
''Keywords:'' {{!!description}}
@@

了解或掌握一门语言,就打开一扇通往一个世界的门。

我这里说的一门语言,非指广义的如汉语、英语等表达语言,而是指狭义的对某一学科或领域特有的表述形式活符号,如生物学、计算机科学等。 

为什么这么说那。 

当了解某种语言,您不仅在通往这个世界畅行无阻,更重要的是您可以用另外一种世界观审视和观察事物,并用此学科的思维方式思考问题,以便更加接近实物的真相。 

就如年后看的这本[[《控制论和科学方法论》|控制论与科学方法论]]来说吧。我们日常生活中许多现象和行为都可以通过另外一种语言来表述和还原 — 虽然这有点修辞学的矫揉造作之嫌,并通过之科学原则改造这个世界。

 “负反馈调节”,其实就是通常所说的“做起来看看再说”。在我们生活中再平常不过的这句话,在另外一种领域换句话来表达就是一种新的语言形式。而这便常的思维模式,在解决问题上是很有效的。例如鹰击长空,不但能准确地扑到固定目标,甚至连飞速躲避的兔子、老鼠也不能逃脱。在此过程中,老鹰锁定目标在捕猎过程中不断的通过负反馈调节接近目标。地对空导弹亦是利用此原理。

那么“正反馈调节”那?

“正反馈”,即我们日常生活中的“恶心循环”。负反馈是目标减少的过程,正反馈是目标差不断增大的过程。“盲人骑瞎马,夜半临深池”是典型的正反馈恶性循环。[[马太效应|心理学模型]]即正反馈的另外一种表述形式。还有冷战时期美俄军备竞争亦是。在实际应用中,这种“恶性循环”被广泛应用,如核发电、炸药爆炸等。正反馈往往预示着失去平衡而失去控制,这时候就需要正反馈调节,使其回归。

如果上面的正负反馈例子并不常见,那么您知道什么叫“知道”吗?怎么样才算“知道”?(见下一篇)

这就是日常生活中的科学语言描述和科学应用的魅力。

//
2019年05月19日周日下午04:43:33//
<span title="控制论与科学方法论"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[控制论与科学方法论]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
@@.note
''Keywords:'' {{!!description}}
@@

这是一本试图运用控制论、系统论的某些概念来介绍科学方法论的书。本书首版于1983年,风靡一时。在香港和台湾地区,被很多学校、企业选为教材。

书中涉及到三个基本概念:

!! 什么是控制论:

<<<
控制论(Cybernetics)是一门跨学科研究, 它用于研究控制系统的结构,局限和发展。在21世纪,控制论的定义变得更加宽泛,主要用于指代“对任何使用科学技术的系统的控制”。控制论与对系统的研究有关,如自动化系统、物理系统、生物系统、认知系统、以及社会系统等等。控制论可被应用于研究包含信令回路的系统。信令回路在这里指,当一个系统的运作改变了它所在的环境,而这些改变又反过来反馈于系统上,并导致系统本身的变化。这种循环最初被称为“循环影响”关系。(维基百科)
<<<

书的前言提到控制论思想的源流,它是由至少三条悠长的支流汇合的结果。一条是数学和物理的发展;另一条支流是生物学和生命科学的进展;第三条支流是人类对思维规律的探讨。

控制论是一门综合性、跨学科的科学方法论。

!! 什么是系统论:
!!!系统
系统,指的是由相互联系、相互作用的要素(或部分)组成的具有一定结构和功能的有机整体;准确来说,''要素+结构=系统。''

系统科学主要研究系统的要素(或元素),结构,和系统的行为(性质)。

!!!系统科学
从系统的角度观察研究客观世界的学科,就是系统科学。 控制论是系统科学的一个分支学科。

!!!系统论
系统论是解决系统问题的科学方法论,是一门逻辑和数学领域的科学,其目的在于确立适用于一切系统的一般原则。

!! 科学方法的几个步骤
科学方法必须建立于收集可观察、可经验(empirical)、可量度的证据,并且合乎明确的推理原则。

!!!科学方法的几个步骤
[img  [https://d2aztkdj0ezvrk.cloudfront.net/items/2Q3C452i0n3D3m0I311v/The_Scientific_Method_as_an_Ongoing_Process.svg]]

除此三个基本概念,本书分五章对控制论和方法论进行论述:

第一章:控制和反馈  涉及概念:可能性空间、共轭控制、正/负反馈;

第二章:信息、思维和组织  涉及概念:信息的储存、通信、加工和组织模式;

第三章:系统及其演化   涉及概念:系统、系统结构、系统演化和几个系统状态;

第四章:质变的数学模型 涉及概念:质变以及质变的两张方法:飞跃和渐变;

第五章:黑箱认识论  涉及概念:黑箱以及认识论

2019年05月02日周四下午09:15:02
“士 ”这个字很有哲学意味。

什么是“士 ”?《说文》:

<<<
士,事也。數始於一,終於十。从一从十。孔子曰:“推十合一爲士。”凡士之屬皆从士。
<<<

也就是说“凡能事其事者偁士”,能办事的人就是 “士 ”。

“士 ”怎么来的?《说文》:

<<<
數始於一。終於十。
<<<

善于做事,能把事情从一开始,做到十结束。孔子对之的解释是:

<<<
推十合一爲士。
<<<

也就是“學者由博返約。故云推十合一。”做学问,从广博到精深即“推十合一”。另外也可以理解为“博學、審問、愼思、明辨、篤行、惟以求其至是也。若一以貫之。則聖人之極致矣。”学问之径,唯求每一步都达到极致,方为圣学之道。

再进一步说明:能做事,即“數始於一。終於十。”善做事,即“推十合一”。这和数学家华罗庚先生说的读书之道:“先把书读厚再读薄”有异曲同工之妙。

<<imageSlider  [[https://cl.ly/pGC1/%E5%8E%9A%E8%96%84.jpg]]    "先把书读厚再读薄">>

2018年02月02日周五下午11:37:53
请问:“摩西上方舟时,每种动物各带了多少?”

......

很少人注意到这个提问本身是有问题的,是诺亚带动物登上方舟,而非摩西。这种现象叫做“摩西错觉”。

造成摩西错觉有三种原因:

1. 摩西和诺亚两个名字的英文元音和音节数都是相同的,容易产生混淆;

2. 动物登上方舟营造了圣经的文化背景,而您对摩西出现在这个文化背景中并没有特别期许;

3. 您的注意力聚焦在了“带了多少动物”,从而忽略了带动物上方舟的人。

人脑之所以产生摩西错觉,罪魁祸首是系统1,因为:


```
系统1:“她最得意的姿态是忘乎所以,最喜欢做的事就是仓促下结论。”所以她容易产生偏见,同样,她也是好骗的。

系统2:易变和怀疑是系统2的职责,但是因为要消耗体能,所以她又是懒惰的。同样她也是容易擅离职守的。

```

那就唤醒系统2来解决摩西错觉,给系统1设置障碍。

再请问:“乔治·华盛顿上方舟时,每种动物各带了多少?”

这样的问题您是不是感到别扭?是别扭,但是不容易出错,您马上会发现问题所在,这就是系统2被唤醒了。

所以我们要杜绝相信哪些荒谬之词,或者说避免被洗脑,被广告麻痹,就需要调用系统2,使其工作起来,抑制系统1。

//2018年02月19日周一上午12:07:38//
马基雅维利因《君主论》而遗名(曾被视为世界上最具影响力与畅销的十大名著之一,与《圣经》、《资本论》等书并列),《君主论》因“马基雅维利主义”而昭彰,“马基雅维利主义”又使“政治”和“政客”成了贬义词而被广泛引用,马基雅维利也因暴政而死。

“马基雅维利主义”是一种政治实用主义,也被称为政治现实主义(Realpolitik)。它的原则是''“在政治活动中摒弃道德的羁绊。……为了达到政治目的而施以任何形式的骗术与手段,.......表面仁厚实则残忍的虚伪政治。”。''非道德统治把政治手段和权术的道德性搁置起来,当作一个不予考量的因素,这是马基雅维利《君主论》的基本原则和理论。在《非道德的政治: 马基雅维利主义的持久真理》(Amoral Politics: The Persistent Truth of Machiavellism,下称《非道德政治》)一书里,以色列特拉维夫大学政治哲学教授本-艾米·沙尔夫斯坦(Ben-Ami Scharfstein)把马基雅维利主义定义为一种''“非道德政治”''。

中国古代的法家政治家商鞅、韩非、李斯其实就是“马基雅维利主义者,强调政治的统治性,而无道德一面。(见[[子产政治道德和历史的退步]])

所以马基雅维利的这本《君主论》小册子被世界广泛认为是专制君主政府(又称“暴政”)的指导手册,“暴政”的说明书,专制统治  <<ref "②">>  者的权术指南。<<ref "①">>  

在本书中,马基雅维利提出一个君主如果希望巩固自己的权力,就不要受任何道德准则的束缚,应该不择手段去实现自己的目的。


<<<
“因为关于人类,一般地可以这样说:他们是忘恩负义的、容易变心的,是伪装者、仿冒品,是逃避危难、追逐利益的。”(第80页)

对于一个君主来说,不仅不必具备各种美德,而且还要保留那些不会使自己亡国的恶行。在慷慨与吝啬方面,“明智之士宁愿承受吝啬之名,因为它虽然带来丑名但是不引起憎慨,追求慷慨之誉,则必然招致贪婪之名,而贪婪之名则使丑名与憎慨俱来。”(第78页)

“在我们的时代里,我们看见只有那些曾经被称为吝啬的人们才做出了伟大的事业,至于别的人全都失败了。”(第77页)
在残酷和仁慈方面,君主对于残酷这个恶名不必介意,所应重视的倒是不要滥用仁慈,因为仁慈会带来灭顶之灾, “被人畏惧比受人爱戴是安全得多的”。(第80页)

但君主要掌握好使用残暴手段的限度和范围,即损害行为要一下子都做完,对臣民的财产和他们的妻女不要染指。在守信和失信方面,君主应当效法狐狸与狮子。“由于狮子不能够防止自己落入陷阱,而狐狸则不能够抵御豺狼。因此,君主必须是一头狐狸以便认识陷阱,同时又必须是一头狮子,以便使豺狼惊骇。” (第83-84页)

当遵守信义对自己不利,或原来使自己作出诺言的理由不复存在时,一位英明的君主绝不能够、也不应当遵守信义。但君主又必须深知怎样掩饰这种兽性,并须做一个伟大的伪装者和伪善者,要显得具备一切优良品质。“因为群氓总是被外表和事物的结果所吸引,而这个世界中尽是群氓。”(第86页)
在书中,马基雅维利还提出君主必须学会避免那些可能使自己受到憎恨或轻视的事情。君主必须像提防暗礁一样提防被人认为变幻无常、轻率浅薄、软弱怯懦、优柔寡断,他应该努力在行动中表现伟大、英勇、严肃庄重、坚忍不拔,使人们对自己抱有“谁都不要指望欺骗他或者瞒过他”的见解,这样才能对抗一切阴谋,坐稳江山。(第87—88页)

同时,君主为避免自己因袒护人民而受到贵族非难、因袒护贵族面受到人民的非议,就应设立作为第三者的裁判机关(议会),而用不着国王担负责任。“对于国王和王国来说,世界上再没有比这个制度更好、更审慎,再没有比这个方法更安全的了。”(第91页)

君主务必把担带责任的事情委诸他人办理,而把布惠施恩的事情由自己掌管。一位君主必须依靠他的行动去赢得伟大人物与才智非凡的声誉。当一位君主公开表示自己毫无保留地赞助某一方或反对另一方,他也会受到尊重,采取这种态度明确的办法总是比保持中立更有用处。(第 107页)
<<<


<<imageSlider  [[http://p0.cdn.img9.top/ipfs/QmR5t4oC75Bxpwu9XxjBrg4JyNePam9e66KVLnoGZuL6vA?0.jpg]]    "《君主论》早期封面">>

而事实上,马基雅维利本身就是“暴政”的受害者。朱利亚诺·迪·洛伦佐·德·美第奇(Giuliano di Lorenzo de’Medici )掌权后,立即对旧政府势力进行了残酷清洗。1512年末马基雅维利被解除一切公职,并在1513年以密谋叛变为罪名被投入监狱,受到了严酷折磨的吊刑(Strappado),肩膀脱节,浑身剧痛,后被释放。也正是在这个时候他写作了《君主论》。马基雅维利心力憔悴、贫困潦倒,希望把这部政治权术著作献给那个差点没把他整死的朱利亚诺,好换取命运的改变。朱利亚诺死后,又献给他的侄子洛伦佐(Lorenzo)。但此书在马基雅维利死后才得以出版。

<<imageSlider  [[http://p2.cdn.img9.top/ipfs/QmeojmNnPymSDieV8Vgtr53YKM5PRzdxFNn3Cp7YhZzj47?2.jpg]]    "佛罗伦萨乌菲兹美术馆的马基雅维利塑像。乌菲兹美术馆曾经是美第奇家族的政务厅。">>

《君主论》不仅是对一个专制君主政府的建言,而且还在积极证明:所有那些发生在马基雅维利自己身上的统治手段,包括惩罚和酷刑,都是正当的。这就像500年后莫斯科大审判中那些政治犯一样,他们一面被判处了死刑,一面还在维护要夺走他们性命的制度。马基雅维利洞察人性的脆弱和阴暗,在他所鄙视的软弱而可怜人类中,就包括他自己。这就是发生在马基雅维利身上最大的讽刺,一个黑色幽默。

而更为讽刺和悲哀的是,统治阶级需要看此书吗?因为统治阶级本来面貌就是非道德和不择手段的,不需要这本书。

2018年05月12日周六下午02:25:47 


@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "在马基雅维利的时代,还没有今天我们所理解的“专制”概念,这个概念要到17世纪方才出现,而在18世纪,由于孟德斯鸠的阐述而成为一个现代意义上的负面政治概念。下一篇阐述。">>

<<footnotes "②" "本书是西方许多君主、领袖学习统治术的经典。相传本书是“英王查理一世爱不释手;英国护国公克伦威尔珍藏着它的手稿影本;法王亨利四世被刺杀时,人们发现他贴身带的,竟然是一部染血的《君主论》;普鲁士腓特烈大帝把它作为自己决策的依据;路易十四,这位赫赫有名的法国君主,每晚必温习此书,并说:“不读此书不能高枕而眠”;拿破仑对《君主论》也百读不厌,胜利的联军在清扫滑铁卢战场时,从缴获的拿破仑的御车中,发现了一本他写满批注的《君主论》;希特勒放在床边经常从中汲取力量;墨索里尼称之为政治家的指南……。">>
民国清流第二部看完了,比第一部少用了很多时间。第二部民国十六年(1927)始,民国十九年(1930)终。从这个时间段内民国的风云变化已经可以推测到这一部分内容没有上一部分精彩,上一部真是大师纷呈,群星灿烂,争奇斗艳。虽然作者为第二部冠以“大师们的战国时代”,并有一部分新人陆续呈现,如徐志摩、林语堂、巴金、郭沫若等,但不管从个体鲜活的魅力描述,还是到清流们的交际轶事,这部分更像是在写断代文学史。作者把更多的笔墨用在了这部分人的作品及其风格上了。不过也难怪,后五四时期,中国社会处于剧烈震动,也是民国清流激荡分化的岁月。大多数知识分子继续高举“个性解放与自由”的旗帜,而部分人放弃“五四”个性主义,走向无产阶级战斗集体主义,中国大地上逐渐有党的出现,国民党、共产党开始活跃,无论是主义之争还是权力裹挟,这段时期的文人无论如何也不可能做一个真正的清流了。


<<<
''清流'',旧时常用来称负有时望、不肯与权贵同流合污的士大夫。《三国志·魏书·桓二陈徐卫卢传》有“陈群动仗名义,有清流雅望”之说。
又,士大夫,“士者,事也,任事之称也”。《论语·泰伯》曰:“士不可以不弘毅,任重而道远。”皇侃义疏:“士,通谓丈夫也。”
中国的“士”,是官僚政治体制所化之人,“处江湖之远则忧其君,居庙堂之高则忧其民”。中国的“士”,即中国的知识分子,一贯疏离政治和权威,是以纯粹自由人的身份,出现在社会生活中的。他们的价值,在于具有独立人格。他们一直在社会边缘作文化漫游、文化守望,表明他们的文化存在和文化思考的独立意义。
<<<

1927年之后,随着国民党北伐一路披靡,一个新的专制王朝的诞生,整个中国笼罩在国民党一党专政独裁统治之下。“锢闭思想、干涉言论”,民国初年相对自由宽松的乱世不再。
清流如胡适发出“宁鸣而死,不默而生”的呐喊,鲁迅、郁达夫等五十一人发表《中国自由运动大同盟宣言》,也喊出“不自由,毋宁死”的口号,这些该是民国清流的绝唱。

''当一个旧的政治制度和一个新的价值系统之间不兼容的时候,权力与权威相分离,社会就进入有震荡强度的变革时期,所谓清流便逐渐退出历史舞台,绝唱也难有续响。''


<<<
早年民国,清流的夸父逐日、精卫填海、飞蛾投火式的文化壮举,写就了中国“士”的短暂而辉煌、灿烂的人文精神传奇与文化梦想的挽歌。
<<<


这些有才华的作家们原本可前仆后继,咨嗟于民族国家之忧乐,寄怀于江山风景之兴替,践行自己的庄重使命,把人民的焦灼与痛苦、追求与奋斗浓缩在自己的作品之中,来折射古老民族及其灵魂在新旧嬗替的大变革中的真容。但政治却限制了他们的艺术想象力和创造力,使文学成为一曲悲壮的交响乐曲。

2018年08月05日周日下午02:44:03
!! 故事一

一个英俊少年,天天到湖边去欣赏自己的美貌。他对自己的容貌如痴如醉,竟至有一天掉进湖里,溺水身亡。他落水的地方,长出一株鲜花,人们称之为水仙。 

水仙少年死后,山林女神来到湖边,看见一湖淡水变成了一潭咸咸的泪水。

 “你为何流泪?”山林女神问道。

 “我为水仙少年流泪。”湖泊回答。

 “你为水仙少年流泪,我们一点也不惊讶。”山林女神说道,“我们总是跟在他后面,在林中奔跑,但是,只有你有机会如此真切地看到他英俊的面庞。” 

“水仙少年长得漂亮吗?”湖泊问道。 “还有谁比你更清楚这一点呢?”

山林女神惊讶地回答,“他每天都在你身边啊。” 

湖泊沉默了一会儿,最后开口说:“我是为水仙少年流泪,可我从来没注意他的容貌。''我为他流泪,是因为每次他面对我的时候,我都能从他眼睛深处看到我自己的美丽映像。''” 

“多美的故事啊!”

!! 故事二

一位商人派他的儿子去向人类的智慧大师讨教幸福的秘密。少年在沙漠中跋涉了四十天,最后来到一座美丽的城堡。城堡坐落在高山之巅,少年寻找的智慧大师就住在那里。

少年没有遇到圣人,却走进了一个大厅,看见一派热闹的场面:商人进进出出,四周角落里的人在聊天,一支小乐队演奏着曼妙的轻音乐,桌子上摆满了当地的美味珍馐。智慧大师在同所有的人交谈,足足等了两个小时才轮到少年。 

智慧大师认真地听完少年陈述此番来访的目的,却说他此刻没时间给他讲解幸福的秘密。他建议少年先在他的城堡里转一转,两个小时之后再回来见他。 

“‘同时,我想请你办件事。’智慧大师说着,递给少年一把茶匙,并在茶匙里滴了两滴油。‘你走路的时候拿着这把茶匙,不要让油洒出来。’ 

少年开始沿着城堡的大小台阶上上下下,两眼始终盯着那茶匙不放。两个小时之后,他回到智慧大师面前。

 “大师问道:‘你看见我餐厅里的波斯壁毯了吗?你看见园艺大师耗时十年培育的花园了吗?你留意我图书馆里那些漂亮的羊皮纸文献了吗?’ 

少年很不好意思,坦白说他什么也没看到。当时他唯一关注的是不要让那两滴油洒出来,因为那是智者托付他办的事。 

“‘那你就再去看一看我城堡中的奇珍异宝吧。’智慧大师说,‘如果你不了解一个人的家,就不能信任他。’ 

少年放松下来,拿起茶匙,重新开始在城堡里漫步。这一次,他注意到了挂在天花板上和墙壁上的那些艺术品,看到了花园,看到了周围的山岭,看到了娇嫩的鲜花,看到每件艺术品都摆放得恰到好处。

再回到智慧大师面前时,他详细地叙述了刚才看到的一切。

 “‘可我托付你拿着的那两滴油在哪儿呢?’智慧大师问。

 少年一看那茶匙,发现油已经洒光了。 

“‘这正是我要给你的唯一忠告。”智慧大师说,''“幸福的秘密就在于,既要看到世上的奇珍异宝,又要永远不忘记勺里的那两滴油。”''

2018年11月21日周三下午10:12:48
这段时间懒癌再犯,积压了许多篇读书笔记。得治!

[[上篇结尾提到胡适与毛泽东|2018年06月02日周六下午09:35:58]]。胡适比毛泽东大两岁,可谓同龄人,但二人的开始和结局确非常的不同。二人的际遇发生在北大。1918年,24岁的布衣青年毛泽东,在他的湖南第一师范的老师后到北大当教授的杨昌济(杨开慧父亲,毛泽东岳父)的引荐下,走进北京大学找工作。青涩而又局促不安的毛泽东告诉李大钊:


<<<
“干什么粗活儿都行,既可得工资,又可抽空听些课。”

李大钊听罢,笑了:“堂堂师范高才生,干粗活儿,大材小用了。”

李大钊带毛泽东去见蔡元培.......

毛泽东推开门,见名扬海内的蔡校长,正伏案批阅文件,听见开门声,抬起眼微笑地目视他。那目光是宽厚仁慈和睿智的。毛泽东走向前,深深地向校长行了大礼,那一刻,他的心充满了敬畏。

毛泽东想了想,告诉蔡先生:几个月前的1918年4月14日,他和蔡和森、何叔衡等年轻人,在长沙创立了以“改造中国和世界”为宗旨的革命团体新民学会。新民学会成立不久,一些有抱负的年轻会员,怀着向西方寻找真理的愿望,响应蔡校长、吴玉章在北京发起的号召,积极组织到法国勤工俭学。

毛泽东一口湖南腔,蔡元培认真耐心地倾听,渐渐眼中流泻出欣赏赞叹的神色。他插话问,那为什么你不去法国勤工俭学呢?

毛泽东是这样解释的:有人到外国去,看些新东西,学些新道理,研究些有用的新学问,拿回来改造我们的国家,是极为必要的。而同时,也要有人留在国内,研究本国问题。我觉得关于自己的国家,我知之甚少,假若我把时间花费在国内,研究问题,可能对本国更为有利。

蔡元培不住地点头,他记住了这位高大的布衣青年,于是抻出一张八行笺,写下他对这位年轻人的安排:


守常先生大鉴:

毛泽东欲在本校谋一半工半读工作,请设法在图书馆安置一个书记的职位,负责整理图书和清扫房间,月薪八元。

蔡元培即日


毛泽东接过来看时,眼泪突然涌出眼眶……

上面的叙述,是主流媒体的统一叙述。胡适以亲身经历,颠覆了这个重要历史细节。
<<<

默默无闻而又羞涩的青年毛泽东进入北大之时,胡适已经以北大第一位洋博士身份在北大任职一年,在《新青年》上发表《文学改良刍议》,成为新文化运动的核心人物。二者的地位和见识非常悬殊。而此时毛泽东对胡适的态度是怎么样那?

1959年,已经迁居台湾的胡适在家中与秘书胡颂平的对话是这样的:


<<<
胡颂平问:毛泽东到北大图书馆工作,是他老泰山杨昌济举荐的吗?胡适说:“不是,毛泽东湖南师范毕业后到了北平,他和五位青年上书与我,这封信,我是交给竹淼生的弟弟竹生保管的。在抗战期间,放在上海。竹生怕生事,把它烧了。当时的北京有个工读辅助会,毛泽东先在辅助会工读,很苦。”胡颂平就问,是否先生介绍他入图书馆的?胡适说:“不,当时章行严(章士钊)当北大图书馆馆长,李大钊当主任。章士钊是湖南人,大概是章和李大钊两人把毛泽东介绍进去的。”
<<<

胡适的话似乎是可信的,因为涉及第三人物众多,可佐证。为什么毛泽东会掩盖这样一个事实那?尚无可靠。

<<<
毛泽东比胡适小两岁。早在毛泽东就读湖南师范学校时,胡适因积极投身新文化运动,开创文学革命而声名鹊起,就成为毛泽东钦佩的楷模。此次到北大图书馆工作,毛泽东曾多次去旁听胡适的课。后来,毛泽东与萧三等人经杨昌济先生介绍,专程去拜访过胡适,同胡适讨论新思潮、新文化运动等问题。并且以新民学会在京会友的名义,请胡适做过报告,解答过新文化运动的问题。这也是后来''毛泽东一度称自己是胡适的学生的由来。可惜,后来人们把这一重要历史细节有意地隐匿了。''

<<<
<<<

1920年1月15日,在胡适的日记中有这样的记载:“毛泽东来谈湖南事。”当时毛泽东在北京酝酿筹备湖南“工友互助团”,为得到社会名流的支持,他去找胡适,就办学的目的与计划请教于胡适。胡适在后来的日记中,追忆了此事:“毛泽东依据我在1920年的‘一个自修大学’的讲演,拟成湖南第一自修大学章程,拿到我家来,要我审定改正。他说,他要回长沙去,用船山学社作为‘自修大学’的地址。过了几天,他来家取章程改稿。不久,他就回去了。”毛泽东在给周世钊的信中,证实了胡适日记的真实性。

<<<

在毛泽东离开北大之后,胡适一如既往的对毛泽东支持。


<<<
1919年7月14日,毛泽东在长沙创办《湘江评论》并发表《民众大联合》。胡适阅后,立即转载在8月24日的《每周评论》第三十六号上。并在《新书》评价一栏中,亲自撰文,热情洋溢地肯定了《湘江评论》与《民众大联合》
<<<

有了胡适的热情支持,毛泽东早期的革命活动才开展得有声有色。

<<<
1920年4月,毛泽东领导的“驱张”(驱逐湖南督军张敬尧)运动,最终取得胜利。毛泽东立即将这一消息告诉胡适,信中写道:

适之先生:

在沪上一信,达到了吗?我前天返湘。湘自张去,气象一新,
胡适从前很少著文参与政治与时局的讨论,并说“二十年不谈政治,二十年不干政治”,胡适的不谈政治,政治却将他推向了政治的旋涡。教育界颇有蓬勃之象,将来湖南有多点须''借重先生'',俟时机到,当详细奉商。暂不多赘。
<<<

直到1936年,毛泽东在延安时还对斯诺说:“我非常钦佩胡适和陈独秀的文章。他们代替了已经被我抛弃的梁启超和康有为,一时成了我的楷模。”

毛泽东执政多年后,也就是1954年10月16日,因毛泽东发表他那封著名的《关于〈红楼梦〉研究问题的信》,毛泽东与胡适昔日师生和睦的关系,彻底改变了。信中说:“看样子,这反对在古典文学领域毒害青年三十余年的胡适派资产阶级唯心论的斗争,也许可以开展起来了。”

<<<
12月1日,毛泽东命周扬搞一个批判胡适的计划;2日,周扬奉命将计划呈毛泽东;3日毛泽东批示:照此办理。于是全党、整个文化界开展了一场声势浩大、波澜壮阔的批胡适资产阶级唯心论的政治斗争。郭沫若、茅盾、陈垣等闻风而动,批判文章铺天盖地。但茅盾和陈垣等人的批判文章,只有批判、没有研究的批判,并无新意,也毫无战斗力。从中,不仅可以看到为了自保而违心地批判胡适的言不由衷,又可看到全国知识分子经历了一场怎样深刻的心理革命。那是一个文人需出卖灵魂方能自保的特殊年代。
<<<

根据耿云志后来的说法是([[参见|http://news.ifeng.com/history/zhongguojindaishi/detail_2012_02/24/12753412_0.shtml]]):

<<<
“这句话我想是他一生里,讲的最有失绅士风度的一句话,他(胡适)说按照毛泽东当时的水平他考北大是考不上的,我估计这个话有可能传到毛泽东的耳朵里,所以毛泽东非常决断地发动一场全国规模的彻底批判胡适的运动。”
<<<

胡适以温文尔雅,谦虚有礼的学术派著称。胡适很少著文参与政治与时局的讨论,并说“二十年不谈政治,二十年不干政治”,他的著名文章《多研究些问题,少谈些主义》可见他的学术做派和主张。就在大陆大肆批评胡适的时候,胡适很认真的把搜集来的批判他的八本书做了批注(三联出版社出版的《胡适思想批判论文汇编》),并响应说:

<<<
“我觉得世界上二、三百年来有一种公开的趋向,朝科学民主这个方向上走,朝新的科学方法走,那时候我朋友陈独秀在《新青年》上发表文章拥护‘德’先生和‘赛’先生,我表示过这样的话,把这个抽象名词人格化,把它看作人,最容易错误的,容易人格化。容易人格化,也就容易偶像化,偶像化了,便会盲目崇拜……当时我朋友陈独秀只认得两个名词,不知道科学是一个方法,民主是一种生活习惯,是一种生活方式。”
<<<

对胡适来说讽刺的是,胡适的不谈政治,政治却一生环绕在他周围赶不走,跑不掉。气量狭窄的毛泽东对恩师痛下绝、毒手,批判他为“资产阶级唯心论”总代表、蒋介石的御用文人及走狗胡适的时候。而在台湾的蒋介石,也把胡适作为公敌来攻击,他在日记中说:“以今日一般政客如胡适等,无道义,无人格,只卖其‘自由’‘民主’的假名,以提高其地位,期达其私欲,对国家前途与实施概置不顾,令人悲叹。”

在《[[民国清流:那些远去的大师们]]》中,作者这样写下总结:

<<<
海峡两岸,两种对立的社会制度,敌对的意识形态,冤家对头的毛泽东和蒋介石,对一个不识相且不为时所用的文化人胡适,却同仇敌忾,相互策应,大动干戈,实为历史所罕见,不仅充满悖论,又意味深长,或正因如此,方显承受误会和扭曲的胡适的思想、文化价值。

舞榭歌台,风流总被雨打风吹去,但作为中国现代思想史上巨擘的胡适,将是历史永恒的话题。
<<<

一名大儒的时代命运就是这样被政治所左右而飘渺。

文人,不为当权所用,即弃之如毕履。

这也是中国历史上的文人命运的缩影。

2018年06月06日周三下午11:27:40
新增了一个宏(参见[[GeneralMacros]]),实现了几种折叠式展示:

! 嵌入式

```
  <<textSliderNoButton "''您最近还好吗?''" "Click the black {{Coze}} icon in the top menu and it will open the help page any time.">>
```
  <<textSliderNoButton "''您最近还好吗?''" "Click the black {{Coze}} icon in the top menu and it will open the help page any time.">>

或:

```
<<textSliderNoButton 作者 "{{Coze}}">>
```
<<textSliderNoButton 作者 "{{Coze}}">>

<<textSliderNoButton 关注微信公众号 {{Wechat}}>>


! 调用式

```
<<tiddlerSliderNoButton Coze>>
```

<<tiddlerSliderNoButton Coze>>
!! 按钮式

<<tiddlerSlider Coze>>

!!图片式


```
<<imageSlider  [[http://zove.me/img/Duck_of_Vaucanson.jpg]]    "您好阿鸭子">>
```

<<imageSlider  [[http://zove.me/img/Duck_of_Vaucanson.jpg]]    "您好阿鸭子">>

!!田字式(参见[[slider]])

```
{{Coze||slider}}
```
{{Coze||slider}}

2017年12月06日上午12:32:29

类似用法:[[2017年12月06日 上午 12:11:14]] + [[2017年12月06日 上午 12:16:56]]
<$list filter="[field:book_title[文学的群星闪耀时-国内篇]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[文学的群星闪耀时-国外篇]]+[!sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   


---

''下载地址:''

[[《文学的群星闪耀时-国外篇》|https://www.asuswebstorage.com/navigate/s/99A8345243254C809FD74F1FB4D305CE4]](mobi格式)
<$list filter="[field:book_title[文明的进程]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:book_title[文言津逮]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:topic[文言津逮]] [field:series[古籍]] [field:genre[古代文学]] [field:series[文言津逮]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link> @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@   - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>









新增appear 插件:$:/plugins/tobibeer/appear

来源:http://tobibeer.github.io/tw5-plugins/#appear

使用说明:https://rizi.me/demo.html 或 http://tobibeer.github.io/tw5-plugins/#appear-Examples:appear-Examples
$:/.my/styles

来源:http://tobibeer.github.io/tw5-plugins/#%24%3A%2F.tb%2Fstyles:%24%3A%2F.tb%2Fstyles


用法示例:

@@.note
''Note:'' 只有共产党才能救中国.
@@


@@.summary
''summary:'' 只有共产党才能救中国.
@@


@@.title-popup
''title-popup:'' 只有共产党才能救中国.
@@
之所以读这本散文集,缘自[[我书架上的神明]]刘仲敬的推荐。

<<<
在流行的周作人、林语堂、梁实秋、查尔斯·兰姆、蒙田、赫兹里特、爱默生当中,一册薄薄的《春醪集·泪与笑》突然跳出。当时的感觉犹如朱彝尊的《高阳台》:“重来已是朝云散,怅明珠佩冷,紫玉烟沉。前度桃花,依然开满江浔。”世间若有烂俗台词所谓“灵魂伴侣”,一定就是这么回事........倘若文字可以用“质地”分高下(余光中是这么认为的),此书堪称“精金美玉”。(在诗歌方面,我只能给格雷的《墓畔哀歌》和阮籍的《咏怀》同样的评价。)同时代流行的优质散文家梁实秋、董桥之类,在我看来都不过是好吃的奶酪:甜腻可口,绵软易朽,绝对当不起“时间的征服者”重任。
<<<

对这位刘仲敬,印象颇深,准确的说是被“吓”的。之前读过他的《民国纪事本末》,厚厚的一本书,全是文言写就(至今没有读完,不是因为文言障碍,而是作者以时间轴的形式,按天按月逐条推进来写,啰嗦!),本以为此兄可能是民国遗老之辈,后来方知乃新中国70年代人,汗颜!更让人惊诧的是,此老兄的文言技能乃自然练就,属于童子功,汗颜!

<<<
《史记》是我第一部“根底”书,冥冥中若有神意。我在十二岁和十三岁之间,非常渴望杀时间的大部头书......对我来说就越好。《史记》比阿加莎·克里斯蒂的小说和斯瓦辛格的电影好.......我不看《表》、《志》之类讨厌的流水账部分,只看《本纪》、《列传》之类有故事、有文采的部分。故事总会有续集,文采则是会上瘾的。这条线路引导我读完了二十四史的大部分,当然也只读有故事的部分。我自己不知道也不在乎有什么用处,无非是搜集大侦探波洛全部作品同类的事情。''我后来莫名其妙地发现自己会写古文和古诗,而且比写英语文章轻松得多''(我根本不会写英文诗)。''现在看来,我大概是古典中国那种熏陶式教育的最后一批意外产品。这种际遇都是时间太多的结果,我估计自己和任何人都不会再有这样的环境了。''
<<<

梁遇春的散文还未看完,暗自佩服和深深的自愧。佩服其中西文化底蕴深厚,文中对西方文哲作家和作品如数家珍,引用如囊中探物;自愧已过而立的自己只能望其项背。梁遇春算是英年早逝,享年不足37岁,是鲁迅后一代民国文人,与周作人、林语堂、梁实秋等人一拨。其作品风格透露着那个”五四“气息--- ---中西文化冲突背景下的思辨和探究,虽没有鲁迅作品的凌厉,却多了几许娓娓之感,漫话絮语,也多了几分幽默和诙谐。他努力从自己经历的生活和阅读的书籍中,捕捉种种矛盾的人生现象———生与死、泪与笑、悲哀与“失掉了悲哀”、恋爱与离异、无情的多情与多情的无情、天真与经验、光明与黑暗、滑稽与愁闷等,这是其小品文的主题,文中即透露着对人生的热情,却亦看出种种痛苦和苦闷,间或有年轻人的消极。

梁遇春独爱短文,他在《小品文选·序》中写道:

<<<
大概说起来,小品文是用轻松的文笔,随随便便地来谈人生,因为好像只是茶余酒后,炉旁床侧的随便谈话,并没有俨然排出冠冕堂皇的神气,所以这些漫话絮语很能够分明地将作者的性格烘托出来,小品文的妙处也全在于我们能够从一个具有美妙的性格的作者眼睛里去看一看人生。
<<<

今天再读梁遇春散文,可能不在于他的思想价值(已完全被鲁迅所替代),而在于其艺术价值的借鉴作用。梁遇春散文的风格特色是什么呢?诚如唐弢概括为“快谈纵谈放谈”(《新文艺的脚印———关于几位先行者的书话》)郁达夫称其为“中国的爱利亚””。虽然梁遗作数量不多,然而另辟蹊径,独具一格,在现代散文史上自有其不可替代的地位,堪称文体家。而如今已经鲜有人提及他的名字了!


//2018年03月14日周三下午03:28:46//

下载:[[梁遇春散文选集|https://www.asuswebstorage.com/navigate/s/0AF67BD118BE47FDB159E1FA8AB8E70F4]]
<$list filter="[has[relation]!field:relation[系统更新]!sort[created]limit[50]]">

 @@color:gray; <$view field="description"/>@@ <$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

 {{!!book_title}} - <$view field="relation"/>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<$list filter="[field:book_title[旧事新知风雨声]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="时光边缘的男人"><a href={{!!douban}}><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[时光边缘的男人]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:location[明代]]+[!sort[created]]">

<$view field="book_title"/> @@color:gray;<$view field="author"/>- <$view field="description"/> - <$view field="relation"/>@@ <$link><$view field="title"/></$link>  
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$details summary="点此预览"> 

<$transclude/>

</$details>

<$list filter="[field:book_title[昨日的世界]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
# [[常用软件下载|http://book.iiyu.tk/?/%E5%B8%B8%E7%94%A8%E8%BD%AF%E4%BB%B6/]]  
# [[一些电影|http://book.iiyu.tk/?/%E8%A7%86%E9%A2%91/]]
#[[爱情动作片|http://waw05.ml/Download]](账号:DT 密码:123456)
#[[91|https://gdlist.reruin.net/GD/91%E7%A6%8F%E5%88%A9]]
#[[一些动画|https://pan.mryy.top/?/Video/Anime/]]
#[[知识管理Evernote笔记|https://www.evernote.com/pub/3057789g/www#st=p&n=b405801c-d699-4a97-8364-164d5f572eae]]
#[[一些代码收集|http://snippets.barretlee.com/]]

`有则改之,无则加冕`  ^^~~冕~~(勉)^^ 

此句出自《论语·学而》:

<<<
曾子曰:"吾日三省吾身":为人谋而不忠乎?与朋友交而不信乎?传不习乎?
<<<

宋朝朱熹《论语集注·学而篇第一》批注:

<<<

“曾子以此三者日省其身,有则改之,无则加勉,其自治诚切如此, 可谓得为学之本矣。” 
<<<

毛泽东在第七次全国代表大会《论联合政府》政治报告中提到:

<<<
“对于我们,经常地检讨工作,在检讨中推广民主作风, 不惧怕批评和自我批评,实行“知无不言,言无不尽”,“言者无罪,闻者足戒”,“有则改之,无则加勉”这些中国人民的有益的格言,正是抵抗各种政治灰尘和政治微生物侵蚀我们同志的思想和我们党的肌体的唯一有效的方法。”
<<<

<$details summary="《论联合政府》">

[img[http://f.cl.ly/items/3c233l2X0y3b263L0q3V/maozd.jpg]]

</$details>

从此,此句广为流传和被人们熟知。

三家村批注:

<<<
有则改之,无则加冕。不传习乎?
<<<


而现实那?“知者不言,言者不尽”、“言者获罪,闻者足戒”、"有则改之,无则加勉”。这就是魔幻现实主义。

```
面对现实中的无奈、虚弱和无助,如果没有精神需求,会遁入犬儒;如果有些精神需求,又很容易委身于灼热的宏大概念;而现今最悲哀的是沉默,或者皮里春秋的喃喃自语。
```


2018年03月10日周六下午10:05:44
<span title="杀死一只知更鸟"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[杀死一只知更鸟]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="杂草的故事"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[杂草的故事]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!!! 加尔布雷斯:《权力的剖析》

其第一章《概述》中指出权力来源有三:一是人格,二是财产,三是组织(9页)。

其中现代社会的“权力”更多来自“组织”——“现代的报刊、电台、电视的权力同宗教一样,也来自组织,这种权力的主要手段也同宗教一样是信仰——社会调控。

!!! 利奥塔:《后现代的状态——关于知识的报告》

<<<
所谓“合法性”,在某种意义上说,只是公众经过讨论而达成的“共识”,但“共识”并不等于“真理”,因此“合法性”本身也是可以质疑的。
<<<

利奥塔在书中提到一个词很有意味:知识合法化。一个极权主义国家中传播的知识很多都是被过滤的知识,被污染的知识。那么知识合法化的标准是什么?怎么界定?


在第十二章中,利奥塔还讨论了教育,一般来说,教育是知识的传递,但科学化曾经阻隔了这种传递中的增长,他说

<<<“如果教学不仅应该保证能力的复制,而且应当保证能力的进步,那么,知识传递就不应该限于传递信息,而应该包括学习所有的程序。这些程序可以改善那种连接不同领域的能力。知识的传统结构小心翼翼地把这些领域相互区隔开了”(109页)。
<<<
这段话值得好好想想。

2019年02月25日周一下午10:47:16
<$list filter="[field:book_title[李鸿章传]] -[title[Manage Books]] -[title[Library Tracker]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
!!! 鄂兰:《极权主义》

<<<
二十世纪给人最深刻记忆的历史,除了技术的增长、生活的富裕之外,最重要的是极权主义、战争恐怖和贫富差异。而这种历史的根源之一,就是“极端的追求”或“极权的形成”,按照霍布斯邦的说法,二十世纪集成了十九世纪以来的“世俗宗教思想,如社会主义与民族(国家)主义,个中的神话,则是抽象的教条,或被当作神人般的政治人物”(中文本,853页)。

那么,极权主义从何而来?鄂兰在其What is Authority一文中依照统治结构、管理方式、政体组织,区分三种政体:一是权威形式的政府(the authorian government),这种金字塔式的政治体制,其权威的依据来自政体之外的、超越政治的力量(如“天”、“上帝”),由此整个结构异常一体,而中心在金字塔之顶部,如教廷或罗马政治体制,其权力依据一为上帝,二为传统;二是专制独裁之政府(the tyrannical government),这是“平等”的政体,一人专制下所有人均无权力,公众无空间发表其不同政见,亦无团体保护其自由,这一政府的权力依据是武力;三是极权主义形式之政府(the totalitarian government),它如同一个洋葱式的结构(the structure of onion),中心是空的,政治领袖恰在此中,其凭依的权力来源是一种虚幻的“真理”或“理想”,如民族主义、共产主义等普遍被认同的幻想,只是一旦幻想幻灭,其结构即崩溃(参见译序的说明)。
<<<

China应该是属于二三交集。

!!! 萨义德:《知识分子论》

<<<
萨义德指出,“知识分子的公共角色,是局外人、‘业余者’、搅扰现状的人”(outsider,“amateur”,and disturber of the status quo)(28页)。

“不管个别知识分子的政党隶属、国家背景、主要效忠对象为何,都要固守有关人类苦难和迫害的真理标准,扭曲知识分子公开表现的,莫过于修饰整扮、噤若寒蝉、爱国情绪及事后自圆其说的变节”(51页)。
<<<

修饰使人爱惜羽毛因而不能勇敢直率,爱国情绪则使人盲目服从政治主流或者听任狭隘的感情,事后自圆其说则更不消说,是一种怯懦,正如萨义德所说的“变节”。

萨义德指出,当社会权威借由媒体、政府和集团铺天盖地的控制和压迫,使得人没有半点改变的机会的时候,人会感受到沉重的压力,因而特别需要知识分子具有“反对的精神”(a spirit in opposition)而不是“调适的精神”(a spirit of accommodation)(33页)。

原本怀着不同思想、目标、信仰的个人就被“国家”、“我们”这样的词汇笼罩在那个大一统的真理象征中,似乎不在这里就不是“我们”,而是“异端”或“另类”,甚至被革出这个“国家”成为“叛国者”。可是,这个政府却被视为“国家”,而“国家”却被先验地预定为“祖国”。所以,我们常常在电视上可以看到“我们万众一心”、“好大的一个家”,“我们”、“祖国”有何等巨大的笼罩性力量。

2019年02月23日周六下午08:15:55
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[枭雄与士林]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[查令十字街84号]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<iframe width="560" height="315" src="https://www.youtube.com/embed/JhdQx_CSIck" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<span title="查理·芒格的原则"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[查理·芒格的原则]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[树木的秘密生命]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
梁遇春散文大多青年时期写就(英年早逝,还能是什么时候),虽然风格是漫话絮语,带点南方文人的温文尔雅,可遮挡不住青年人内心燃烧的火,这有点像其后世学弟北大余杰,只是余杰身上刺多与温情。


<<<
怯懦无能的我在高楼上玩物丧志地读着无谓的书的时候,偶然听到警钟,望见远处一片漫天的火光,我是多么神往于随着火舌狂跳的壮士,回看自己枯瘦的影子,我是多么心痛,痛惜我虚度了青春同壮年。
<<<


<<<
“上海是一条狗,当你站在黄浦滩闭目一想,你也许会觉得横在面前是一条恶狗。狗可以代表现实的黑暗,在上海这现实的黑暗使你步步惊心,真仿佛一条疯狗跟在背后一样。北平却是一只猫。它代表灵魂的堕落。北平这地方有一种霉气,使人们百事废弛,最好什么也不想,也不干了,只是这么蹲着痴痴地过日子。真是一只大猫将个个人的灵魂都打上黑印,万劫不复了”。
<<<

<<<
会笑的人思想是雪一般白的,不容易有什么性狂。
<<<

<<<
为维持面子的缘故,渐渐造成虚伪的习惯,所以智识阶级特别多伪君子,也因为他们对面子特别看重。他们既然对自然对人情不能够深切地欣赏,只好将快乐全放在淫欲虚荣权力钱财……这方面。
<<<

<<<
生不是由我们自己发动的,死却常常是我们自己去找的。
<<<

<<<
只有死才能够使人了解自己,指示给骄傲人看他也不过是个普通人,使他厌恶过去的快乐;他证明富人是个穷光蛋,除拥塞在他口里的沙砾外,什么东西对他都没有意义;当他举起他的镜在绝色美人面前,他们看见承认自己的毛病同腐朽。呵!能够动人,公平同有力的死呀,谁也不能劝服的你能够说服;谁也不敢想做的事,你做了;全世界所谄媚的人,你把他掷在世界以外,看不起他:你曾把人们的一切伟大,骄傲,残忍,雄心集在一块,用小小两个字“躺在这里”盖尽一切。
<<<

<<<
我们对生既然觉得二十四分的单调同乏味,为什么不勇敢地放下一切对生留恋的心思,深深地默想死的滋味。压下一切懦弱无用的恐怖,来对死的本体睇着细看一番。我平常看到骸骨总觉有一种不可名言的痛快,它是这么光着,毫无所怕地站在你面前。
<<<

<<<
杀(人)犯当临刑时节,常常唱出滑稽的歌曲,人们失望到不能再失望了,就咬着牙齿无端地狂笑,觉得天下什么事情都是好笑的。这些事都可以证明滑稽和愁闷的确有很大的关系。
<<<

<<<
“我不得不老是狂笑着,怕的是笑声一停,我就会哭起来了。”这或者也是愁闷人所以滑稽的原因。<<footnote "[1]"法国的戏剧家Beaumarchais的话>>
<<<

<<<
我承认偷情的少女,再嫁的寡妇都是造福于社会的,因为没有她们,那班贞洁的小姐,守节的孀妇就失丢了谈天的材料,也无从来赞美自己了。
<<<

<<<
我们既然知道人类理智的能力是有限的,那么又何必自作聪明,僭居上帝的地位,盲目地对于一切主张都持个大人听小孩说梦话态度,保存一种白痴的无情脸孔,暗地里自夸自己的眼力不差,晓得可怜同原谅人们低弱的理智。
<<<

<<<
“流浪汉如入生命的波涛汹涌的狂潮里生活。”<<footnote "[2]"近代小品文家Jackson在“流浪汉”文里的话>>
<<<


2018年03月16日周五下午11:44:22

<div style="background:#c8d4d7">
{{!!note}}
</div>
<$list filter="[field:book_title[梁遇春散文选集]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[森林的奇妙旅行]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="植物名字的故事"><a href="https://book.douban.com/subject/24698961/"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=30%></a>
</span>

<$list filter="[field:book_title[植物名字的故事]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[植物学]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="植物学家的锅略大于银河系"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[植物学家的锅略大于银河系]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[植物学通信]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<iframe width="600" height="315" src="https://www.youtube.com/embed/yVwxCHHlYr4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
!! 植物学阅读书目:

<$details summary="相关书目">

<$list filter="[field:genre[自然科学]] +[!sort[created]]">

《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》</$list>

</$details>

!! 相关阅读笔记:

<$list filter="[field:topic[botany]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<$list filter="[field:book_title[植物的记忆与藏书乐]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[植物知道生命的答案]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<ul>
<$list filter="[tag[正读]!sort[created]]">
    <li>
	  <$checkbox tag="Done">  <$link><$view field="title"/></$link>  @@color:gray;作者:<$view field="author"/>@@</$checkbox>

<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
 <$list filter="[<currentTiddler>days[-30]!days[-7]]"> @@color:orange;^^近期^^@@</$list>
<$list filter="[<currentTiddler>days[-356]!days[-30]]"> @@color:gray;^^最近^^@@</$list>
</li>
  </$list>
</ul>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[毒木圣经]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
毛姆在《阅读是一座随身携带的避难所》中首先强调,''阅读是一种享受''。正如书名:阅读是一座随身携带的避难所,所以“不管学者们对一本书的评价如何,不管他们是多么一致地对一本书盛赞,要是你对这本书不感兴趣的话,你就不必去理会这本书。”这和之前读民国名家关于读书的合集《怎樣讀書》几位大家读书观一样,尤似钱钟书。当然这里指的不是学校里面的学习性阅读,而是我们日常生活之阅读,而这些阅读“书籍既不会帮你拿到学位,也不会教你谋生的本事;不会教你如何航船,也不会教你如何修理停运的机器,但是这些书会让你活得更加丰满。”

而对于小说的阅读,毛姆认为则不必逐字逐句贯穿阅读,要跳读。

<<<
我对在《红书》上发表的书单做了一个简短的注释:“如果聪明的读者能学会跳读的技能,他便总是能在阅读中获得最大的乐趣。”''一个明智的人不会把读小说当作一项任务,而是把它作为一种消遣。''
<<<
事实如此,诸多名家大腕之所以读书充栋,一些人能一目十行,在一些书目上实在不必字字必到,只要掌握其核心思想,或者故事发展趋向,以及主人公的故事脉络即可。“ 如有需要的话,他(小说作者)会牺牲掉真实度和可信度来完成他想要达到的效果,而那并非科学类或信息类作品的创作方式。小说家的目的不是指引,而是愉悦。”当然这是指大多数的小说,不是绝对的,对一些经典,之所以誉为经典,就是没有芜杂繁复,也无法压缩和裁剪,这类小说非但不能跳读,更应该复读。前面指的使小说,对一些非小说类的书籍,个人经验来看,也应该跳读,看完目录,掌握整本书的结构,一般来说第一章讲述本书的写作起因,第二章输出主要观点,之后的章节皆为论据。所以,重点读第二章即可。

2017年11月19日 下午 04:01:39
<$list filter="[field:book_title[民国北京城:历史与怀旧]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[民国清流:大师们的中兴时代]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[民国清流:大师们的战国时代]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[民国清流:大师们的抗战时代]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[民国清流:那些远去的大师们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:location[民国]]+[!sort[created]]">

<$view field="book_title"/> @@color:gray;<$view field="author"/>- <$view field="description"/> - <$view field="relation"/>@@ <$link><$view field="title"/></$link>  
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>
<$details summary="点此预览"> 
<$transclude/>
</$details>
  </$list>

<$list filter="[field:book_title[民风野趣幽然醉]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
在Twitter上看到有人推荐老舍这部作品的同名电影。我是先看了电影,再看了小说文本。

电影是黑白风格,有一种老电影的感觉,对还原故事发生时代 --- 民国 --- 有强烈的代入感。主演范伟 --- 丁主任丁务源 ---刷新了我对他的认识,看电影时我完全剥离了其喜剧演员的身份。电影故事,通过三个主人公 --- 丁主任、秦妙斋、尤大兴 --- 的逐一入场分成三段式结构,就像小说的三个小节。电影故事很简单,然而人物细节的演绎确然人唏嘘不已。虽然《不成问题的问题》里老舍描写的是民国环境下发生的故事,那么一个世纪有的今天,这个小说刻画的人物您仍然能在身边找到,而且是普遍存在。我想即便老舍先生即便活到现在,也会喟然感叹中国人何等的不长进。

电影中丁主任对自己管理的企业为什么不能盈利的回答穿越100年到今天也依然是最具时代代表性:

<<<
“等企业走上正规,明年会盈利的!”
<<<

//2019年01月03日周四下午02:02:49//


''电影《不成问题的问题》:''(需科学上网)

<iframe width="600" height="315" src="https://www.youtube.com/embed/mUCBKxidpgc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Weekly:9.18~9.24

''读书:''《江湖丛谈》 连阔如

什么是江湖?怎么混江湖?江湖有哪些套路?....敬听连阔如播讲!

这位生于大清,长在民国,成名在新中国的满族镶黄旗人,在民国时期以“云游客”为笔名,在报纸上连载《江湖丛谈》,揭露旧社会江湖的那些事。如果当时有BBS,云游客当之无愧一定是一个知名网络ID。这位云游客就是后来响当当的评书艺术家连阔如先生,生于六七十年代的人,对这个名字应该耳熟能详。

《江湖丛谈》 是一本很有意思的江湖揭秘之书,记录的都是作者亲身所见所闻。内容涉及五花八门,有传统文艺和杂耍,如评书杂技,相声戏法等;有街头已经消失的旧行当,如镖局;还有灰色行当,如相面、偏方卖药、江湖骗子等。

这本奇书不仅记录的都是一些奇人奇事,还是一本立身江湖之道的生存指南、暗语春点手册,也是研究曲艺史、评书史、相声史、杂技史、武术史、城市游乐设施、欺骗术等,客观上具一定的认识价值和资料价值必备参考文本。//( {{!!modified}})//


<<<
张三禄不愿说八角鼓儿,自称其艺为相声,相之一字是以艺人之相貌形容喜怒哀乐,使人观之而解颐,声之一字是以话的声音,变出痴苶呆傻,仿做聋瞎哑,学各省人说话不同之语音。盖相声之艺术,能圆的住黏儿,馈的下杵来,较比搭班作艺胜强多多。
<<<


<<<
“治脚气方:用荸荠煎汤洗之,可愈。”
<<<
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[泥土:文明的侵蚀]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
添加一个注脚宏($:/macros/danielo/footNote),注脚样式 [[popupStyle]]。

使用方法:

1. 单独注释:

```
<<footnote "[1]"我就是我啊">>  |  <<footnote "Coze" "[[coze]]">>  |  <<footnote "Coze" "{{Coze}}">>  
```
我是谁?<<footnote "[1]" "我就是我啊">>

2. 多次注释:

```
<<ref "Coze">>
```
我是谁?<<ref "Coze">>

3. 底部注释:

```
<<ref "[1]">>
+
<<footnotes "[1]" "You can see this footnote at the bottom of the page or inside a popup">>
```


我是谁啊?<<ref "Note2">> 您是谁啊?<<ref "Note3">>

---
<<footnotes "Note2" "我就是我Coze啊">>
<<footnotes "Note3" "您是访问者吧.">>

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[活法]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<iframe width="600" height="315" src="https://www.youtube.com/embed/yVwxCHHlYr4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Weekly:8.28~9.10

''书名:''《浮生三记》 沈君山

如果您看过清代沈复的《浮生六记》(记录与妻卿卿我我恩爱有加的笔记小品),您一定会对《浮生三记》侧目的。//17.9.20//


初以为《浮生三记》也出自沈复,启书方知实乃其本家沈君山,两人相隔上百年,虽邯郸学步其先祖沈复,但绝非狗续貂尾。沈君山如沈复也乃一大才子,与连战、钱复、陈复安(陈诚之子)同被雅称为台湾四大公子。沈君山出身名门,外祖父是最早一辈留学法国的留学生,父母均为民国留美农学博士,可谓农学世家,以她母亲命名的“骊英1号”、“骊英2号”等小麦系列影响至今。内战后随父迁入台湾,后留学美国学习物理,中年后回台任清华大学校长,晚年中风退休开始关心两岸关系和公益事业。沈君山的朋友圈可谓名人大家云集,张学良、胡适、蒋经国、吴光中、梅贻琦、金庸、钱复、许倬云、聂卫平等不一而足,这也是其文字看点之一。

《浮生三记》和其《浮生再记》相比,我更喜欢三记,虽然两本书都是短篇回忆录和之前发表文章合集,但是三记更多收集的是人文方面内容,例如《花莲的白灯塔》记忆其青年恋爱的激情岁月;《一着而为天下法》则是写一代围棋大师吴清源老先生的。当然也有一些评论小品,例如对电视剧《人家四月天》的座谈会,谈徐志摩和他们那代人的爱情,可窥其爱情观,摘抄以飨:

<<<
良人者仰仗终身者,红盖头掀起来,终身便从一而终的情形再不复见,但新的婚姻有新的困扰,一个人一生大多要经过几次痛苦的抉择,几次悲欢离合。完美的爱情和完美的婚姻完全不一定能画上等号,有情人当然最好成为眷属,但不必也不一定要成眷属,婚姻的形式在改,将来也许契约的形式都会改掉,但终久是共同相处的伴侣,有灵性的伴侣,有知性的伴侣,有事业的伴侣,更有生活的伴侣。所谓生活包括柴米油盐日常相处。聪慧才情的男女,在爱情中沉湎于前两者,而婚姻的基石却往往在后两者。林徽音选择梁思成,徐志摩得到陆小曼,在爱情层面上,也许后者更“美”,更罗曼蒂克,但在婚姻层面上,成败得失是十分显然。
>真正懂得爱情的人,不只在获得,更在如何转化,失败了,如何化爱情为友情,成功结果了,也要化激情为温情,使之可长可久。当然,分手总是痛苦的,情感的伤害难免,但时间会让它痊愈,最重要是不要伤害对方的自尊,也不必伤害自己的自尊。尤其是年轻的男女,往往分不开爱情和自信。失恋的时候,最伤心的往往不是缘分已尽,而是“我真的那么差吗?”事实上,爱情是盲目的,人生一生的成败和情场一时的得失,并没有关联,只是太上何能忘情,必须分手时,一定要互相帮助,重建自信的帮助。
<<<


还有记述梁思成与金岳霖及林徽因三人的关系,也破有唏嘘:

>梁思成续娶的第二位夫人林洙,写了本林徽音的传记,对这事经过有生动描述,录之于后:

>我曾经问起过梁公,金岳霖为林徽音终生不娶的事。梁公笑了笑说:“我们住在总布胡同的时候,老金就住在我们家后院,但另有旁门出入。可能是在一九三一年,我从宝坻调查回来,徽音见到我哭丧着脸说,她苦恼极了,因为她同时爱上两个人,不知怎么办才好。她和我谈话时一点不像妻子对丈夫谈话,却像个小妹妹在请哥哥拿主意。听到这事我半天说不出话,一种无法形容的痛苦紧紧地抓住了我,我感到血液也凝固了,连呼吸都困难。但我感谢徽音,她没有把我当一个傻丈夫,她对我是坦诚和信任的。我想了一夜该怎么办?我问自己,徽音到底和我幸福还是和老金一起幸福?我把自己、老金和徽音三个人反复放在天平上衡量。我觉得尽管自己在文学艺术各方面有一定的修养,但我缺少老金那哲学家的头脑,我认为自己不如老金。于是第二天,我把想了一夜的结论告诉徽音。我说她是自由的,如果她选择了老金,祝愿他们永远幸福。我们都哭了。当徽音把我的话告诉老金时,老金的回答是:‘看来思成是真正爱你的,我不能去伤害一个真正爱你的人。我应该退出。’从那次谈话以后,我再没有和徽音谈过这件事。因为我知道老金是个说到做到的人,微音也是个诚实的人。后来事实也证明了这一点,我们三个人始终是好朋友。我自己在工作遇到难题也常去请教老金,甚至连我和徽音吵架也常要老金来‘仲裁’,因为他总是那么理性,把我们因为情绪激动而搞糊涂的问题分析得一清二楚。”
>在《林徽音文集》中,后期的诗文常常提到金岳霖,很多全家福或朋友出游的照片里,全有老金,斜着头仰起脸非常神气的样子。林去世后,他写了副有名的挽联:“一身诗意千寻瀑,万古人间四月天。”后来金和梁的友情一直维持到文革时期,都受尽折磨,也互相激励。我们可以说,在世俗眼光里,他是“退出”了,但在更高一个层次上,他是“进去”了。//17.9.23//


读回忆录的文章,总给人以娓娓之感。如读沈之同辈''黄仁宇的回忆录《黄河青山》'',如同看一部口述历史的纪录片。黄出身寻常百姓之家,在蒋介石的麾下位至上尉参谋,后弃戎从文留学美国,成为一代历史研究名家。黄的文章字里行间虽没有沈文章透露出的贵族精英之气,但多了一份人性和历史的沧桑之感。而读沈之回忆录,别有一种清风佛面之喻,一方面因沈之经历,历经三朝三国;另外就是出身名门,国学深厚,总能在其文字里找到现代社会欠缺的一些东西。//17.9.23//
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[海德格尔与阿伦特通信集]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[消失的微生物]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="混乱:如何成为失控时代的掌控者"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[混乱:如何成为失控时代的掌控者]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[清代学术概论]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:location[清代]]+[!sort[created]]">

<$view field="book_title"/> <$view field="author"/> @@color:gray;- <$view field="description"/> - <$view field="relation"/>@@ <$link><$view field="title"/></$link>    
<$list filter="[<currentTiddler>days[-10]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$details summary="点此预览"> 

<$transclude/>

</$details>
  </$list>


<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[清官册]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[清朝的皇帝]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[灰犀牛]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
CCAV上正在热播电视剧《灵与肉》,看了两眼,不像时下作品。一查资料,原来是张贤亮的同名小说改编。花了一个小时把小说看完,短篇小说;电视剧很长,40集。恰好这几天正在整理[[中国百年思想史|中国百年思潮迭代和探究]]和[[近代阅读史|私人阅读史]],张贤亮恰是一个时代的写照。

从电视剧《灵与肉》里面看到张贤亮的影子,主人公和张的出身背景、时代遭遇以及成长基本相似,都具有一个美国留学的父亲,因此在上山下乡和文化大革命中被牵连,分配到大西北进行劳动改造,从而扎根西北娶妻生子。张的作品之前接触不多,所以索性就把《[[张贤亮文集]]》读了下来。

张贤亮的作品对标[[近代阅读史|私人阅读史]],属于70、80年代流行的伤痕文学(苦难文学)或寻根文学,这类作品基本上都是一股灰蒙蒙的基调。苦难文学,如果说是一代人对时代的控诉,不如说是一种集体回忆,对青春苦难的悲情叙事。因为回溯那个时代的教育和思想潮流 --- [[中国百年思想史|中国百年思潮迭代和探究]],这代人具有朴素的价值观和高度统一的世界观,所以他们做不出控诉的壮举,最多也是一种宣泄式牢骚。

伤痕文学有最大的特点是压抑 ,思想压抑和性压抑。这是时代造就的,这些正值澎湃青春的精条汉子懵懵懂懂的被丢弃在了荒北大漠、崇山峻岭或者戈壁滩头,改造地球,与天斗与地斗,赶英超美。所以他们是在扎根在土地中,成长在人民中,具有一种原始的朴素注意和价值观。

就说对劳动和土地的热爱之情吧。

<<<
劳动创造了人,因而人的原始本性天生地倾向于体力劳动;紧张的体力劳动会激发起已被文明淹没了的、早已经变为人的潜在意识的本性,突然使人又倒退回若干万年,感受到一种自身正在发展,自身正在变化,自身的品质正在丰富的心理上的快感。

回到若干万年以前去再现进步的过程,在这个过程中去享受满足与愉快吧!

从我和海喜喜比试体力劳动以后,从我被马缨花喂养成一个有正常体力的劳动者以后,五年过去了,我无数次地在劳动中享受过这种返祖的满足与愉快。
<<<

这是多么原始、朴素而由衷的价值观啊。

而对于性压抑,这群敢于天地试比高的汉子看起来就没有那么好了,身体可以被画地为牢圈起来,而思想确不能自主。

<<<
纯洁的如白色百合花似的爱情,战战怯怯的初恋,玫瑰色的晚霞映红的小脸,还有那轻盈的、飘浮的、把握不住的幽香等等法国式罗曼蒂克的幻想,以及柏拉图式的爱情理想主义,全部被黑衣、排队、出工、报数、点名、苦战、大干磨损殆尽,所剩下来的,只是动物的生理性要求。可怕的不是周围没有可爱的女人,而是自身的感情中压根儿没有爱情这根弦。于是,对异性的爱只专注于异性的肉体;爱情还原为本能。


有思考能力的人靠思考生活,没有思考能力的人靠本能生活,但本能使人坚强,思考却使人软弱。
<<<

他们从精神层面对恋爱的美好向往,发展到无法阻挡的身体原始性的冲动,到心理畸形的幻想,这一切都是那么自然、不可阻挡而又痛苦和扭曲。一群精条汉字发起了一场对吊死在所住屋里的一个女孩子的集体意淫:


<<<
在渠坝下躺够了,劳改犯们舒臂伸腿地活动起来。 “操!夜黑里来个女鬼就好了。” “来的女鬼可别是披头散发的,最好是涂脂抹粉的。” “熊!吊死鬼都伸着舌头,老长老长,通红通红,在你脸上舔一下,可够你呛!” “一个女鬼不够分,最好来一帮,十三个,咱们一人搂一个。” “咱们组长不要呀,咱们组长是个读书人。” “读书人咋啦?读书人也长着一个……”

“咦!俊着哩!还穿着红鞋,两条大辫子,唏溜个光!脸白森森的,眼睛毛毛长刷刷的。咱们给她抬下来的时候,身子骨还软软的……”

有的老劳改犯说她尿湿了裤子,说她舌头伸得老长老长,据说吊死的人都是这副模样,可是大多数老劳改犯都认为这是对她的亵渎,坚持把她描绘成一个仙女,我们这些后来的劳改犯,没有亲睹,对她当然不具有那种崇敬的情感,只是一个劲儿地想把她还原为活生生的肉体。“熬着点吧”,在受煎熬的时候,不由自主地会把她当作精神上的慰藉。

啊,贞洁的、勇敢的、不知姓名的姑娘,原谅我们吧!
<<<


<<<
豆大的油灯伴着我夜读。当我只见我一个人的身影,模糊地印在泥皮斑剥的土墙上的时候,我就会想到“十三”。“十三”!这是个极不吉利的数字。这个数字会把她召唤出来。

果然,她从梁上飘落下来了。先是一团不成形的彩色的雾气,落到地面上,便立刻凝聚成了一个活生生的美丽的姑娘。和老劳改犯说的一样,两条大辫子油光水滑的,长长的睫毛,水灵灵的眼睛,皮肤即使在昏黄的油灯下也显出白中透红的光彩。她还穿着冬天的红棉袄,脚上果真穿的是红鞋。简陋的小土坯房因为她的到来而变得喜气洋洋了。

她轻轻地掸拂着衣衫,怯怯地向我靠近,并发出一声暖人心意的深深的叹息:“哎,苦啊——”

“来吧,”我向她伸出手去,“你苦,我也苦,让我们两人在一块儿吧……”

“我说的就是你呀。”她将手搭在我的肩上,弱不禁风的、但又很温暖的身躯紧贴着我,眼睛看着摊在我面前的书。“你苦,我不苦。人死了,什么苦恼也没有了。每天晚上,我都看着你等人睡下了,又爬起来看书,何必呢?别把身体搞坏了。”

她的声调是幽怨的。我搂着她那娇小的腰肢。我被她不自以为苦却关怀着我的精神感动了,我含着辛酸说:
“你也苦呀。为什么年纪轻轻地就寻死呢?活着总比死了好吧?你要是活着多好!”

“活不下去呀,”她微微地晃动着身子,使我有一种进入梦幻般的感觉。“人要把我嫁给我不愿嫁的人,你说还能活吗?”她又低声地说:“当初,要是你在就好了。我正是要出嫁的那天跑到这儿来上吊的。那天你要在这儿,我就不上吊了。”

我把她揽进我的怀里,让她坐在我的大腿上;抚摸着她光滑的发辫。“这都是社会的原因呀,”我说,“我们还没有达到真正的男女平等,还没有真正的婚姻自由。我看书,就是要探索怎样才能建设一个人与人之间真正平等的社会。”//节选自《男人的一半是女人》//
<<<



2018年06月22日周五下午03:52:49
<span title="对赌"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=35%>
</span>

<$list filter="[field:book_title[牧羊少年奇幻之旅
]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[王氏之死]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[现代汉语语法十讲]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
我不知道为什么会翻看这本书,也许是因为“人生”二字,也许是因为路遥的名头,总之一气呵成的看完了。

如同上个世纪七八十年所有文学作品一样,小说《人生》也充满了浓厚的乡土气息,不,它就是描写农村的小说。主人公高加林,在城乡二元撕裂的环境中,在现实与理想中痛苦的涅槃。路遥写这部小说是在上个世纪八十年代,那时候是纯粹的城乡二元社会结构,农民是一种职业,工人和公务员端“铁饭碗”吃商品粮,这是两种阶级的存在,二者也没有直接的上升通道。如今近半个世纪过去了,把《人生》的故事移植到当今社会,主人公的经历也会照样存在,痛苦依然不会减少。只不过高加林在今天可能是生存在城市各个角落的,在农村可能叫胖丫,狗剩的,现在叫了Hensy或者David的人。而半个世纪之前的故事一样会继续下去。

<<<
他从田野上再一次来到城市。不过,这一次进来非同以往。当年他来到县城,基本上还是个乡下孩子,在城市的面前胆怯而且惶恐。几年活跃的学校生活,使他渐渐把自己的思想感情和生活习惯与城市紧密地融合在了一起;他很快把自己从里到外都变成了一个城里人。农村对他来说,变得淡漠了,有时候成了生活舞台上的一道布景,他只有在寒暑假才重新领略一下其中的情趣。
<<<

八十年前的高加林进城之后,混不下去还可以回去重新作一位农民。如今农村出来的年轻人,许多已经没有回头路可走了。虽然城市比之前具有了更多包容性和上升通道,但相比五十年,城市给人的压力,或者说社会给人的压力,作一个城市居民的压力是有增无减。五十年前的高加林虽然在城市进行了漂洗,但身上依然有一股泥土气息,是有根的,而今进入城市的年轻人,一旦经过城市的熏染和荡涤,身上再无那种泥土味,甚至在进城之前已经没有了泥土味。这种泥土味在之前是一种褒义词,是芬芳的,就像之前看[[伤痕文学系列|男人的一半是女人]]里面普遍对土地和劳动的歌颂。如今之于泥土,已经变成了贬义词,是老土,是落后的,是不入社会价值观主流的。如果说泥土味代表着现实,城市就是理想,而理想和现实之间的距离就是现代人的人生。


<<<
是的,现实是不能以个人的意志为转移的。谁如果要离开自己的现实,就等于要离开地球。一个人应该有理想,甚至应该有幻想,但他千万不能抛开现实生活,去盲目追求实际上还不能得到的东西。尤其是对于刚踏入生活道路的年轻人来说,这应该是一个最重要的认识。
<<<

尽管时代在变,但正像路遥这部小说的名字《人生》一样(路遥这个小说名字太大了,小说托不住这个大名字。不如其《平凡的世界》叫做人生更合适。),作为个体的人生在任何时代都无甚差异。


<<<
人生的道路虽然漫长,但紧要处常常只有几步,特别是当人年轻的时候。

没有一个人的生活道路是笔直的,没有岔道的。有些岔道口,譬如政治上的岔道口,事业上的岔道口,个人生活上的岔道口,你走错一步,可以影响人生的一个时期,也可以影响一生。——柳青
<<<

2018年07月21日周六下午10:10:15
<$list filter="[field:book_title[琅嬛文集]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[瓦尔登湖]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[瓮葬]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:series[生活艺术]!sort[created]]"> 

<$link to={{!!title}}><$view field="title"/></$link> 
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@
</$list>


<$details summary="点此预览"> 

<$transclude/>

</$details>









<<<
在评论家看来,埃利亚斯是在“用一种受控的语言书写”。而他的个人经历与学术作品之间的紧密关系表明,“受控”绝非风格那么简单,而是社会学中至关重要的核心观念。
<<<

1935年冬天的一个黄昏,一个中年男子乘船渡过英吉利海峡,从伦敦港踏上了大不列颠的土地。寒风中,他跟随着人潮沉默前行,去往流亡犹太人基金会。无人能体味他当时的感受,甚至包括未来的自己。不过有件事今天看来可以肯定,这个人前半生的记忆将长久封存在海峡的另一边——没有人会对一个普通犹太难民的经历感兴趣,他也无暇沉湎过去。他得去找点儿资助,还要学一些口语,才可能应对现实的窘境。

几番周折,在朋友的帮助下,中年人以学者的身份从基金会拿到了一小笔奖学金。在证明文件里他写道:诺贝特·埃利亚斯(Nobert Elias,港台也翻译为:诺博特·伊里亚思),生于1897年6月22日,哲学博士,社会学家。除此之外,再无文字。

封存个人的记忆,然后转身离去,对于38岁的埃利亚斯来说,不是第一回了。1915年,刚满18岁的埃利亚斯投身一战,就不得不将一段安宁祥和的记忆埋进心里。他出生在德国东部的布雷斯劳(Breslau,今波兰城市弗罗茨瓦夫),父母都是犹太人。身为纺织业厂主的独生子,埃利亚斯有一个几近完美的童年。玩具、保姆、家庭教师、网球、海滨度假,上层中产阶级应有的享受,他都拥有。虽说犹太人的择业仍有传统上的限制,例如不能担任官员,不能晋升某些教职等等,彼时的德国尚闻不到浓烈的排犹气息。在父母的安排下,埃利亚斯打算从医,那是犹太人最理想的职业之一。可是待他从著名的约翰尼斯文法中学毕业,即将迈入布雷斯劳大学校门之际,第一次世界大战爆发了。第二年,埃利亚斯先在东线作战,后来调到西线战场。年轻的通信兵背着笨重的电报机,肩扛大卷的电线,和部队一起向法国北部的佩罗讷(Péronne)挺进。密集的炮火撕开夜色,随处可见战马和士兵的尸体。一场战斗下来,远方还有隆隆的炮声,身边的战友已吹响口琴,唱起思乡的歌谣。

“那个场景我记得清清楚楚,”和一位访客谈起这段往事,埃利亚斯情绪激动。同时,他一再承认自己理解不了,“从家庭提供的彻底的安全感转向军队提供的彻底的不安全感”,他是怎么熬过那段日子的。因为,当他尝试去回忆去理解的时候,往事已经尘封七十年。绝大多数记忆在时光中磨损、阻隔、变形,化为齑粉,就算重新唤起,往往也会显得不可思议。

被埃利亚斯封存的关键记忆实在太多了。比如他极少向人提及,德国在一战中的失败如何影响了他的学业和志趣。战争的硝烟散去,并不意味着和平的到来。左右两派的极端势力都企图用暴力推翻羸弱的魏玛共和国,建立他们心目中的秩序。失业的军官和士兵组成了暗杀团,刺杀政治人物,制造恐怖气氛。高昂的战争赔款导致恶性的通货膨胀,榨干了无数德国家庭的财产。迟迟没有拿到哲学博士学位的埃利亚斯只得选择辍学打工维持生计。他做过五金材料厂的营销经理,还短暂客串过报纸的新闻记者,辛苦了整整两年,才帮助陷入财务危机的父母渡过难关。

正因为亲身经历了一战的残酷以及战后的失序,埃利亚斯的心中才浮现出一个重大的问题:暴力与秩序究竟有什么关系?然而当他带着这一疑问走上学术之路,却遭遇了更具体的困惑。

读大学的时候,埃利亚斯原本同时攻读医学和哲学,还取得了初级医学学位和实习医生资格。结果临床实习期间他才发现,自己不可能兼顾两个专业。为了更好地理解世界,他放弃医学,专志于哲学。可是长期的医学训练却不断地提醒他,哲学传统中的“人”与生理学意义上的“人”很不一致。理性、精神、意志、心灵,哲学家讨论的这些东西,在肌肉、骨骼、神经和大脑中能找到对应的结构吗?或者,西方哲学传统中抽象出来的“人”根本不存在?这些困惑不仅驱使着埃利亚斯的脚步偏离了既定的学术坦途,还令他和导师之间产生了不小的冲突。他的博士导师洪尼希斯瓦德(R. Honigswald)是著名的新康德主义 <<ref "①">> 哲学家,对学生的离经叛道大为不满。压力之下,埃利亚斯不得不对博士论文做了大量的修改和删节。即便如此,本该于1922年拿到的博士学位拖到两年后才取得。

师生之间的这场冲突,在埃利亚斯的学术道路上投下了第一道难以抹去的黯淡阴影。表面上看,它只是稍微延误了一个学者的治学进程,事实上却造成埃利亚斯错过了一个个关键的时间节点。首先,他很难获得“特许任教资格”。因为要获得这个资格,他得写一篇比博士论文更高水准的东西,交由学术委员会答辩并通过。显然,在洪尼希斯瓦德的影响范围内,前景渺茫。可是没有这个任教资格,他就不可能拥有“编外讲师”这个身份。而没有这一身份,他就休想获得大学的聘任。也就是说,至少在当地,埃利亚斯失去了学术研究和传道授业的机会。

另一方面,埃利亚斯从这场冲突中看到了哲学的无能。特别是对新康德主义这一类剥离了历史维度的先验哲学,他产生了生理上的厌恶。他决定将布雷斯劳的大学记忆封存起来,告别家乡,告别哲学,前往海德堡(Heidelberg)学习新专业——社会学。自此以后,终其一生,埃利亚斯都用“哲学的”(philosophical)这个单词评价他认为最负面的学术作品。

怀着重获新生的兴奋,1924年秋天埃利亚斯来到了海德堡。很快他发觉,这里的现实同样残酷。大学时期他曾经参加过哲学家卡尔·雅斯贝尔斯(Karl Jaspers)的研讨班,对海德堡大学的学术氛围十分向往。时过境迁,社会学的主要创始人马克斯·韦伯(Max Weber)已经去世,他的弟弟阿尔弗雷德(Alfred Weber)像宗族继承者那样统治着整个学术领域。韦伯兄弟把同事和学生团结在一起,构成了一个旁人很难涉足的谱系。像埃利亚斯这类毫无根基的向往者,只能尴尬地出现在各种研讨会的后排,拼命地做笔记。偶尔,他也有机会和滕尼斯(Ferdinand Tönnies)、桑巴特(Werner Sombart)这些古典社会学的大家交谈几句。不过很难想象,那些人会记得他。

在那段日子里,埃利亚斯不得不靠给留学生补习德语赚取生活费。后来,他终于成为海德堡大学的正式学生,阿尔弗雷德·韦伯的博士候选人。但是,鉴于严格的进阶顺序,以及犹太人的微妙身份,他在学术上的前途可谓遥遥无期。
他最大的收获可能是结识了卡尔·曼海姆(Karl Mannheim),一位来自匈牙利的犹太学者。此人仅比埃利亚斯大三岁,却已经是众人瞩目的学术新星。正是在他的引荐下,埃利亚斯才得以出入韦伯遗孀举办的学术沙龙,并且鼓起勇气在阳台上宣读自己的第一篇社会学论文。然而在1928年德国社会学协会的会议上,曼海姆与韦伯长期的竞争公开化了。这场学术冲突再一次改变了埃利亚斯的命运——在师生关系与朋友情谊之间,他选择了后者。翌年,曼海姆受聘为法兰克福大学社会学教授,埃利亚斯以学术助手的身份追随而去。曼海姆承诺,只要做三年助教,就帮助他取得特许任教资格。

再一次,埃利亚斯将过去封存,按照重新拟定的计划,展开新的学术探索。在法兰克福,他不仅拿到了学术生涯中第一份正式的薪水,并且顺利地在三年内完成了题为《宫廷社会》的任教资格论文。一切都表明,法兰克福的日子远比海德堡好过。可是,1933年的年初,就在埃利亚斯完成论文的时候,希特勒和纳粹夺权了。曼海姆兑现了承诺,在指导了论文答辩后,旋即被校方革去了教席,匆匆流亡英伦。而那篇《宫廷社会》的打印稿,就像埃利亚斯的记忆一样被封存起来,三十六年后才重见天日。

在法兰克福逗留期间,埃利亚斯再度体验到暴力与秩序的错综关系。他戴上圆猎帽,架着单片眼镜,装成贵族的样子混迹人群,去亲眼目睹希特勒的煽动能力。不久,一个党卫军中校开着敞篷吉普车冲进学校,咆哮着逼他交出社会学系的钥匙。埃利亚斯的结论是,所谓的理性根本压制不住暴力。在特定条件下,暴力甚至会利用理性,把自己组织得有条不紊。

1933年底,埃利亚斯怀揣父母倾尽所有的钱财逃到法国。他与在法兰克福认识的一个雕刻家和一个作家建起了一家小型的木制玩具厂。就像在布雷斯劳干过的那样,他又一次扮演营销经理的角色,奔走在巴黎大大小小的卖场。不到九个月,小厂就倒闭了,埃利亚斯陷入赤贫。数十年后他回忆道,虽然半生困顿,但唯有巴黎,让他真真切切尝到了饿肚子的滋味。
两年之后,希特勒撕毁凡尔赛和约,实行义务兵役法,开始扩充军备。同时纳粹德国还通过了纽伦堡法案,剥夺了犹太人的国民权利。在这种情况下,埃利亚斯接受一个移居剑桥的老朋友的建议,前往英国寻求庇护。于是1935年底,他登上了横渡英吉利海峡的客船。

在纳粹崛起的大背景下,像埃利亚斯那样流亡英国的犹太学者很多。那个时期,自然科学工作者尚好,人文社科类的学者很难找到工作,更别提教职了。比如早年成名的曼海姆就不得不屈就英国经济学院,做一名普通教师。在科学家圈子里颇有声誉的哲学家卡尔·波普尔(Karl Popper)在英国待了九个月,最终只好远赴南太平洋,到新西兰去任讲师。相形之下,埃利亚斯没有著作,少见文章,唯一像样的论文还躺在法兰克福大学资料室,其前景不言而喻。所以,流亡犹太人基金会的一小份奖学金,如同雪夜中的炭火,激起了他极大的生活热忱。
他像一个返乡的旅客,迅速地放下记忆的负累,一头扎进大英博物馆的图书室里。仅仅用了大半年的时间,埃利亚斯就完成了这个三年的研究计划,写出了厚达800余页的《文明的进程》。当然不难想象,这部被后人誉为皇皇巨著的作品在当时没有什么与公众见面的机会。直到1938年,在父亲的资助下,出版才略有可能。

那一年,年逾花甲的父母历尽艰辛,从布雷斯劳赶到伦敦来看望爱子。埃利亚斯劝父母留在英国,但是他们不肯。父亲说亲戚朋友全在家乡,不忍离弃。再说自己一生奉公守法,纳粹其奈我何?他们执意返回布雷斯劳,还帮《文明的进程》找到了出版商。

可是印刷工序做了一半,那个犹太裔的出版商就逃离了德国。埃利亚斯的父亲只好把半成品偷偷运到瑞士,在那里装订成册。1939年底,埃利亚斯收到父母的消息,说《文明的进程》在瑞士以猎鹰出版社的名义出版了。没过多久,1940年初,他收到母亲的信,说父亲已经去世。再后来,家乡的音讯全无。1941年,他又收到母亲的一封信,也是最后一封。那封信是通过红十字会转寄的,发自前往犹太人集中营的中转地。但是埃利亚斯不知道,当他收到信的时候,母亲已经死在了奥斯维辛。

《文明的进程》出版给埃利亚斯的命运带来了一线转机,然而战争立刻将其抹杀了。在曼海姆的帮助下,伦敦经济学院打算聘请埃利亚斯做高级研究员。不料纳粹德国对英国发起了大规模空袭,学院被迫从伦敦迁往剑桥,聘任也就不了了之。不仅如此,按照当时的政策,埃利亚斯埃像大多数敌对国的“可疑分子”那样,受到英国政府的严密看管。1940年,他先是被关押在利物浦附近的海顿敌侨营,后来又被转至马恩岛。

人类学家埃里克·沃尔夫(Eric Wolf)当时只是一个犹太少年,也在关押之列。后来在回忆敌侨营的经历时,他还记得那个叫“埃利亚斯”的教授,在英国特有的阴雨之中,于满地泥泞的军用帐篷之下,“在一块充当黑板的脏兮兮的纸板上圈圈画画,讲什么一个人怎样来到人世间,不是作为素朴孤立的个体,而是作为一个社会网络上的节点”。沃尔夫说,埃利亚斯的这个想法看似简单,却改变了他思考社会现象的方式。

如果说《文明的进程》在刚出版时还有些许反响,那么数年的战争也将其彻底清除了。诺贝尔文学奖获得者托马斯·曼(Thomas Mann)读过此书,对它颇有赞赏,如今他流亡美国,无暇他顾。美国著名历史学家比尔德(Charles A. Beard)很早也阅读过此书,并深受其影响,但是《文明的进程》一直没有英文版,妨碍了它的传播。还有两位著名的荷兰评论家,曾对《文明的进程》击节叹赏,可是他们在德国入侵荷兰时相继自杀了。就这样,《文明的进程》也像埃利亚斯的大多数经历,埋入记忆的深处。二战结束后,生存的压力并没有减轻多少。英国的街头挤满了难民,各个大学的门口等候着更多的求职者。为了生计,埃利亚斯只得去社区学校或训练中心碰碰运气。他帮情报机构甄别过德国战俘里的纳粹分子,在工党附设的成人教育中心做过辅导老师,讲过一些社会学的课。同时,断断续续的,他在伦敦大学兼职,教些成人教育的内容。他还做过群体治疗的精神分析师,为战争心理创伤的患者提供帮助。这种没有稳定职业没有固定收入的日子,他一过就是十年。直到1954年,57岁的埃利亚斯才得到人生中第一个正式的学术职位:莱斯特大学的社会学讲师。

在规模不大、声名不彰的莱斯特大学,埃利亚斯和另一位犹太裔学者一起,用了数年时间把社会学系建成英国最有影响力的人才基地。著名的社会学家安东尼·吉登斯(Anthony Giddens)的第一个教席就是在那里取得的。然而直到1962年正式退休,65岁的埃利亚斯都没有在莱斯特大学取得教授之职。在同事和学生的印象中,他是一个和蔼的老教师,仅此而已。

造成这一印象的主要原因还是关乎记忆。就在埃利亚斯获得教职之际,他得悉了母亲死在奥斯维辛的消息。这一巨大的打击像一道铁闸,几乎彻底地封闭了他的记忆。无人可以倾诉,无人可以理解,对于埃利亚斯而言,连倾诉和理解这两个词都显得轻浮。他甚至不愿发表文章——从任教到退休,他几乎什么都没有写。

另一个主要原因在于埃利亚斯的不合时宜(untimeliness)。历史的错位、时代的作弄、思想的独特,包括本人刻意的回避,都使得英国学界对他全然漠视。

这时候,遥远的加纳寄来了教授聘书,邀请他去建立社会学系。于是埃利亚斯再度转身,到加纳大学去待了两年,还成了非洲艺术品收藏方面的行家。

1965年,埃利亚斯返回英国,继续在莱斯特大学兼职授课。可能是因为非洲之行放松了身心,他开始尝试与年轻学者合作,发表了一系列文章。有些论文后来被学界视为体育社会学的奠基之作。他还与人合作出版了《局内人与局外人》等著作,探讨了体制、定居和迁徙等社会问题。然而,这些具有开创性的作品仍然没有改变英国社会学界对他长达四十年的忽视。
到了1968年,情况发生了变化。再版的《文明的进程》在荷兰、德国和法国受到了学界的重视和公众的追捧。第二年,他的《宫廷社会》也从资料室里的打印稿变成了正式出版物,同样好评如潮。1977年,埃利亚斯获得法兰克福颁赠的杰出学术研究奖——阿多诺奖,象征着命运之神的正式垂青。

欧洲大陆慢慢熟悉了埃利亚斯的名字,要他去做访问学者的邀请函也多了起来。他待在英国的时间越来越少。埃利亚斯先是在德国比勒费尔德的跨学科研究中心住了几年,后来又移居阿姆斯特丹。

然而在英语世界,无论是英国还是美国,埃利亚斯大体上得到的仍是冷遇。可以说,他在英国的40年,完全过着局外人的生活。而在美国,他的影响也局限在极少数优秀学者的圈子之内。实际上,当埃利亚斯于1984年选择永久定居阿姆斯特丹时,英语世界并没有意识到他们的损失。直到1989年,英国社会学会才想起正式邀请埃利亚斯来举行作品研讨会,然而此时的大师已是风烛残年不良于行。

正是在这二十年里,埃利亚斯斯进入了一生中最长的创作期,直至1990年去世。他重新开始用自己的母语进行创作,出版和发表了不少重要的作品,其影响也扩大到全球范围,并逐渐被人当作经典。

随着声名的确立,人们对埃利亚斯的个人经历也产生了兴趣。然而直到87岁高龄,他才谨慎地开启记忆之窗,允许他挑选的人从外部打量。可是记忆不是照片,经历了漫长的封存,它们早已模糊,变得相当不可靠。更多的个人生活根本没有机会再现,或者由埃利亚斯本人来述说。为什么从前线调回布雷斯劳做卫生员?为什么重返大学后会参加当地的犹太复国主义青年运动?为什么完成学业后迟迟无法获得哲学博士学位?为什么选择一辈子独身?甚至连这些疑问都须得后来者拼凑。以至于有学者抱怨,埃利亚斯身上存在“反自我”(counter-ego)的倾向。一生之中,他不断刻意地压制自己的记忆,造成了一种特别健忘的性格。而这种性格最终报复了他:当一部新著的草稿被过于热心的清洁工从寓所送进垃圾焚化炉,衰老的埃利亚斯再也没有能力凭借记忆来恢复它大致的轮廓。

不过,对个人记忆的压制同时也磨砺出埃利亚斯性格中坚韧与独立的那一面。刻意的健忘不仅驱散了坎坷境遇中的沮丧和恐惧,还帮助他实现了情感上的克制。实际上,今天的心理学家都知道,没有情感的参与,记忆难以成型——短时记忆或许可以办到,长时记忆则几无可能。埃利亚斯对个人记忆的种种压抑,本质上就是对个人情感进行的控制。在旁人看来,它使埃利亚斯具有一种超脱、甚至有些漠然的人生态度。

当这种态度反映到埃利亚斯的作品里,有人就质疑他不关注迫切的现实困境。为此他在《投入与超脱》中解释说,他想以超脱的态度去追求真理,“用充分客观的知识”取代形而上学的胡说八道,取代意识形态的各种神话,从而有助于人类对未来的有效把握。在另一个场合他悲痛地承认,母亲在毒气室里遇害的场景一直铭刻于心,“我过不了这道坎”。但是他又接着说:“我倒是很想写一本书,来讨论整个纳粹的暴行。可是有太多的东西需要我去做出阐释。”直到去世后,《德国人》一书才以遗著的方式释放了埃利亚斯的情感,讨论了他一直想讨论的问题:一个产生莫扎特、贝多芬、歌德和席勒的德国,为何堕落为充满暴力和压迫的地狱?即使这样,这本书的副标题依旧体现出埃利亚斯的克制:十九世纪与二十世纪的权力争夺与生存习惯的发展。

一位专家一语道破埃利亚斯的写作风格:“他用一种受控的语言书写。”而他的个人经历与学术作品之间的紧密关系表明,在他的心目中,“受控”绝非风格那么简单,而是至关重要的核心观念。这一点,在他的代表作《文明的进程》里体现得尤为突出。

以赛亚·伯林(Isaiah Berlin)说,二十世纪是有史以来最糟糕的世纪。如前所述,对此埃利亚斯肯定深有体会。他在一个史无前例的残酷背景下来写作《文明的进程》,显然不是为文明——尤指过去四五百年来以“民族—国家”为中心的西欧文明唱赞歌。大致来说,埃利亚斯的目的是要帮助人们重新认清,到底什么是文明?文明是怎么起源、怎么成型的?从而深刻地理解文明的发展、曲折、倒退与崩坏。


2018年05月15日周二上午11:35:14

----
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "新康德主义(Neo-Kantianism;Neukantianismus)是伊曼努尔·康德的哲学思想在18世纪的复兴。新康德主义重视康德的科学著作,强调概念研究而淡化直觉的地位。但新康德主义的伦理思想往往与社会主义接轨,并对奥匈马克思主义和爱德华·伯恩斯坦的修正主义产生了重要影响。新康德主义受到阿瑟·叔本华《作为意志和表象的世界》(1818)以及其他后康德哲学家,如雅各布·弗里德里克·弗里斯和约翰·弗里德里希·赫尔巴特等人对康德哲学批评的影响。在这之后的德国哲学一定程度上都关涉到新康德主义。“新康德主义”一词也可以指任何以部分或有限地认同康德观点的人。自彼得·斯特劳森出版《感觉的界限》(1966)一书以来,人们对康德的作品的关注逐渐复兴。由于强调认识论而牺牲本体论,《感觉的界限》被归为新康德主义的立场。在借之后,让-吕克·南希近期的著作鉴了现象学对先验的理解,并继续强调对康德著作的反向阅读。1933年,纳粹上台,德国各地的新康德主义圈子被解散。">>
<$list filter="[field:book_title[男人的一半是女人]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="白鲸"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[白鲸]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="百年文言"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[百年文言]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
梁文道在《[[我读]]》里提到一个“''监狱视角''”的概念很有意思。

<<<
一个人,在他失意或是坐牢的时候读历史,会从历史里面读出阴谋诡计,读出一种被我叫做“监狱视角”的东西:把历史看成是一种规律,认为我只要摸懂这个规律就能东山再起,这是一种为现实服务的阅读。
<<<

“监狱视角式阅读(监狱式阅读)”更准确的说是一种探究自我救赎的过程,是一种心理修复和自我催眠。按照梁文道的说法是“现实服务的阅读“,不如说是一种情绪阅读。这种阅读很要命,或陷入自我挖掘的陷阱,坐在陷阱里遥望天空,只能看到寥寥星辰。

与“监狱式阅读”相对的应该是“成功学式阅读(或 机场书店式阅读)”,这种阅读同样是危险的。成功学书最大的作用是不能让你成功,但是能让你兴奋起来,是一种兴奋剂。(参见[[关于读书的两个视频]])

还有一种写作,叫''监狱式写作''。

<<<
如果你没办法写出畅销的通俗小说,没办法完全靠写作为生该怎么办?有一个办法就是去坐牢。很多有名的作家都是在监狱中完成他们的作品的,比如法国情色文学大师萨德侯爵 <<ref "[1]">> ,他那些充满鸡奸、诱奸、变态、性虐待情节的书都是在监狱里面完成的。或者像王尔德,后来坐牢的时候也写了很多好东西。最妙的是你坐牢之后就不用再担心生活费用的问题了,有国家养着你。换言之,某种程度上你像是加入了作协,有政府给水给米,你在里头专心写作,不过前提是你坐牢的时候犯的问题不是太大,不是连写作的纸笔都不能给你的情况。如此说来,狱中创作的确是作家们可以考虑的出路之一。
<<<

梁文道说的不错。监狱确实是一个写作好环境,但是梁文道分析的还不够透彻。监狱里之所以写作高效、高产和具有作品高潮,不是空间的静谧和对生计的无忧,真正起作用的是无欲。在监狱里一切欲望和自由都是要被打压和限制,所以就没有了起心、动念,您真正拥有的和自由的只有灵魂和思想,而这又正是写作最需要的。如今有多少人已经具备一定的物质条件可以达到独立空间和无忧无虑的生活,但是没有见多少人可以写出上品佳作,因为在这种条件下欲望可以肆虐、可以到处伸张,何谈灵魂的自由的翱翔啊。

2018年06月11日周一下午02:15:51

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "萨德侯爵(1740-1814),全名唐纳蒂安·阿尔丰斯·弗朗索瓦·德·萨德(Donatien Alphonse Francois Sade),是一位法国贵族和一系列色情和哲学书籍的作者,以其所描写的色情幻想和他导致的社会丑闻而出名。以他名字命名的萨德主义是性虐待的另一个称呼。代表作有《一个牧师和一个临死的人的对话》、《索多玛的120天》、《闺房哲学》等。">>
《唐研究》主编,荣新江教授,在[[《榮新江談〈唐研究〉》|https://mp.weixin.qq.com/s?__biz=MzA5MDE1NzAwNg==&mid=2650793424&idx=1&sn=46e005bf46de045a425f2c9ec0e17207&chksm=8804bf71bf7336676944f533e444a336dcbf2e87129203e3d9fc1261d9b80941c260835a89fa&mpshare=1&scene=1&srcid=0517sbZYzSuV4G6T6RtSE72l#rd]]一文说:

<<<
看完一本书,不写篇书评就不算看完。
<<<

葛兆光先生在《且借纸遁》一书中也有相似的话:

<<<
年轻时在北大求学时所受所训练“要对所读书作六百字的提要”稍微轻鬆一点,但对我来说也太累了!
<<<

我在 <$appear show="读书即忘怎么办一文中  &raquo;" hide="&laquo; close" $state="slider-buttons">

{{读书即忘怎么办}}

</$appear> 提起过写读书笔记的好处。


PS. 《[[且借纸遁]]》这个书名真好,与毛姆读书随笔《[[阅读是一座随身携带的避难所]]》有异曲同工之妙!

读书的一大妙处就是在各本书之间相互跳跃和连络,发现其或同源、或姻亲、或旁支、或嫁接、或平行关系,从而合纵连横。

//2018年05月17日周四上午11:41:37//



//相似关联://

更多与<$appear show="''阅读有关的话题'' " $state="slider-button">
{{Laws of reading}}</$appear> 预览。

!!! 鲍默:《西方近代思想史》
鲍默指出二十世纪的人普遍有失落感:

<<<
“日益为一般人所使用的三个词,证实了这种失落感,这三个词就是著名的三A:荒谬(absurd)、焦虑(anxiety)与异化(alienation)”(487页)。
<<<

在解释新马克思主义和左派理论何以在欧洲知识分子中有如此大的吸引力时,鲍默就说:

<<<
第一,生活在一个无所事事的资本主义社会的显贵们普遍有罪恶感;第二,共产主义在一个欠缺信仰而又渴望信仰的世界中,可以充当宗教;第三,左派的神话是一个悲观世界中的乐观福音,给人以解放和革命的指望;第四,党员在党内可以感受到一种密切的、类似“家”的连接关系;第五,作为一种学说的共产主义,运用严密推理,有科学的面貌(大意,577页)。
<<<

葛兆光评价:这种富于同情的了解的解释大致很对,只是橘枳异地,寒暑不同,未必可以用在中国新马与左派的头上。

!!! 赫维茨达拉:《来自远方的拷问——哈维尔自传》

在回答关于政治观点的问题时,哈维尔说:

<<<
“我摒弃‘社会主义’这个词,完全是因为我一直反对过分固定的词汇,从语义上讲也就是失去意义的词汇。我反对空洞的意识形态术语和咒语,它把思想僵化在一种观念不变的封闭结构里,而且越封闭就离实际生活越远。”(16页)
<<<

他觉得现在世界的危机在于非人力量越来越大,造成一种心境即失落感:


<<<
“对形上学的掌握的失落,对先验论经验的失落,对一切超人的道德权威的失落,对一切更高的境界的失落。这虽然很奇怪却又非常符合逻辑:一旦人类开始把自己看作是世界上最高意义的源泉及衡量一切事物的尺度时,这个世界便失去其人情味,人类也就开始失去对世界的控制。”(18页)
<<<

在谈到他作为异议者的生活时,他曾经相当恳切地指出,


<<<
“不要和中央进行臃长的一般性的思想争论,那样会使许多具体的事成为中央的牺牲品,‘只’需要为那些具体的事而斗争,并为之做好不屈不挠斗争到底的准备。换句话说,就是不要躲在密室里进行斗争,而要把斗争公开化”(93页)。
<<<

在谈到知识分子时,他说:

<<<

“我也认为,知识分子应该不断使人不安,应该作为世界之痛苦的见证人,应该因独立而引起异议,应该反抗一切隐藏着的和公开的压力和操纵,应该是体制、权力及其妖术的主要怀疑者,应该是它的谎言的见证人。因此,一个知识分子不能去扮演被分配的角色,也不能屈从于胜利者们所写的历史。一个知识分子不应该属于任何地方,他不管在哪里都应该做为一个刺激物,他不应该有固定的位置。”(177页)
<<<

2019年03月06日周三下午09:56:14
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[知识的错觉]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
所有的颠覆式创新都不是敲锣打鼓来的,而是隐藏在一片噪声里。它是代表未来趋势的一个信号,但你却通常看不到、看不懂、看不清。所以,一定不能以一种藐视的态度看待新生事物。它可能满身缺点,你用自己的优点比它的缺点,基本上你会全胜。但是,颠覆你的这个东西,不需要做成十项全能,它只要在一个点上追求极致,做得远远超过你,这就足够了。
<<<


-----//《特斯拉之父:埃隆·马斯克传 》(竹内一正)//


<<<
我发现每个人都能举出一项马斯克用来让员工如期完成任务的管理技巧。以布罗根为例,通常由经理为员工设置完成期限,而马斯克则引导他的工程师们自己掌控交付日期。“他不会说,你必须在周五下午2点前完成这项任务。他会说,‘我需要这项艰巨的任务在周五下午2点前完成,你能做到吗?’”布罗根说道,“然后,如果你说了‘能做到’,那么你勤奋工作的原因就不再是因为他的要求,而是为了你自己。这是一个你可以感受到的区别。你为自己的工作写下了保证书。”
......
他不怎么在乎对方是否可以给出正确答案,他更关注他们描述问题的方式和解决问题的方法。

SpaceX的做事原则是全情投入你的工作并把事情搞定。等待指导或详细指示的人将会举步维艰。习惯得到反馈意见的员工也是一样。而最严重的错误,就是告诉马斯克他的要求是无法实现的。

有时候,马斯克会拒绝购买一个2 000美元的配件,因为他期待你能够找到更便宜的配件或者自己发明出更省钱的方法。但他又可以不惜花费花9万美元租用一架飞机将东西送往夸贾林环礁,因为这样做可以节省一整天的工作时间。

埃隆对于没有达到他标准的员工也一样苛刻。“他总是说,‘如果你想解雇某人,就应该马上解雇,否则只会浪费彼此的时间。’”

有一个员工因为孩子出生而错过了一场活动。马斯克马上发来一封连珠炮似的邮件:“这不是借口。我感到非常失望。你需要弄清楚,什么对你来说更重要。我们正在改变世界、改变历史,如果你不打算全力以赴,那你就别干了。”

马斯克曾用“吞着玻璃同时凝视深渊”来描述自己的创业生活....

当扎克伯格希望帮助你分享宝宝照片的时候,马斯克则是希望将人类从自我毁灭和意外灾难中拯救出来。

硅谷精神的人——如快速行动、在组织内部废除官僚等级制度,并且持续改进那些梦幻般的机器,追逐我们错失的那些真正具有突破性的成就。

“我们想要会飞的汽车,而不是140个字符。”

“我们这代人中最聪明的大脑都在思考如何让人们点击广告,”Facebook早期工程师杰夫·汉默巴彻(Jeff Hammerbacher)对我说,“这太糟糕了。”硅谷越来越像好莱坞。与此同时,那些消费者已逐渐转向内心世界,醉心于自己的虚拟人生。
<<<


-----//《硅谷钢铁侠》 (美)阿什利·万斯)//
我在[[Laws of reading]]里已经整理过不少读书方法。今天在《会读才会写》看到另外一种形式的阅读技巧 --- 密码读书法(或文献阅读法),也算是一种读书笔记的写作方式 --- 社科八股式,记录之。

彭玉生在《“洋八股”与社会科学规范》将其划分为:问题、文献、假设、测量、数据、方法、分析、结论。

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c0dc204b27.jpg]]    "“洋八股”与社会科学规范">>

''什么是阅读密码?''阅读密码,其实就是将一些常用的标注简化为缩写的字母。您也可以把“密码”理解为「标签」(Tag)。

文献阅读,书中其实总结了两大类标签,首先是基于文献内容的标签,包括了:


<<<
WTD:What They Do,他们要做什么
SPL:Summary of Previous Literature现有文献综述
CPL:Critique of Previous Literature,现有文献批评
GAP:Gap,空白
RAT:Rationale,理论依据
ROF:Results of Findings,研究结果
RCL:Results Consistent with Literature,与现有文献观点一致的研究发现
RTC:Results to The Contrary,与现有文献观点相反的研究发现
WTDD:What They Did,他们做了什么
RFW:Recommendations for Future Works,对未来研究的建议
其次是读者需要评注的部分的标签:POC (批评点 :Point of Critique)、MOP(明显的遗漏点:Missed Obvious Point)、RPP(待探讨的相关问题 :Relevant Point to Pursue) 、WIL (能否:Will)。书中将这些标签称为阅读策略。
<<<

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c0f604db23.png]]    "飞利普博士针对社会期刊文献的阅读密码表">>

标注标签的目的对于社会科学的文献研究来说,主要还是为了厘清文章的脉络,理解作者的逻辑,并为后续处理做准备。所以如何打标签,应当着重以目的为导向。书中有表格给出,用以识别文本的功能,表格如下:

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c101072e91.jpg]]    "标签的功能分类">>

有了这些标签的在书中的分布性标注,一本书的属性都基本上掌握了。这些标签就像经纬度上的一个个坐标,按图索骥就会找到桃花源,多点鸟瞰一览众山小。如下图:读后整合

 <<imageSlider  [[https://i.loli.net/2018/08/09/5b6c101072e91.jpg]]   "阅读密码整合表">>

如果说这是读社科文献书的一种方法,同样利用 Tag法用作读书笔记。例如在Onenote上,对应 笔记 - 分区 - 页,分别设置为:书名 - Tag - 摘要,这样一套完整的读书笔记结构就很清晰了。

虽然这套密码读书法有点啰嗦,不过也算是一种实用性读书法了。带着问题去读书,以结果为导向。
Weekly25 日期:6.12~6.18


''书名:''《禅与摩托车维修艺术》

''科目:''哲学

''作者:''罗伯特·M·波西格 

''作者简介:''

作者波西格(1928-,Robert M. Pirsig)大学时主修生物化学,后来对哲学产生兴趣,1950年前往印度学习东方哲学。回国后,在当地大学担任写作课教师。1961年,他被诊断为偏执型精神分裂症和临床忧郁症,被多次送进精神病院,接受过28次电击疗法。

1968年出院后,他带着10岁的儿子克里斯,进行了一次长途摩托车旅行。他把旅行的感受和思考,写成了一本书《禅与摩托车维修艺术》(Zen and the Art of Motorcycle Maintenance)。

由于连续被121家出版社拒绝,直到1974年,这本书才出版。但是出版后,销售量惊人,超过500万册,成为70年代美国十大畅销书之一,目前累计销售量已经超过1000万册。《吉尼斯世界纪录》称它是"世界上被拒稿次数最多的畅销书"。

[img[http://image.beekka.com/blog/201112/bg2011121802.jpg]]

''简要介绍:''

"禅"和"摩托车"有什么关系,怎么会放在一起呢?

这两个词都是象征。"禅"象征一个人内心的心灵探索,是主观哲学思考;"摩托车"象征科学技术,是客观的外部存在。作者把它们放在一起,就是暗示这本书讲的是,如何将主观和客观统一起来,正确地认识自我和外部世界,达到一种和谐存在的境界。也就是说,如果有一天,"维修摩托车"也能成为一种"禅",那会怎样?

作者通过夹叙夹议的叙事方法,一边描述和儿子骑摩托车旅游的过程,一边触物生情引入科技和和人的哲学观点。

正如作者在序言中所说:

<<<
"本书不应该在任何意义上,与东方佛教徒的禅学实践联系在一起。它与摩托车的关系也不是很大。"
<<<

''关联阅读:''

这本书让我想起台湾作家詹宏志的''《旅行与读书》'',这本书早已在读书清单里了,还没有来得及看。倒是看过詹宏志在一席上的演讲:[[旅行人:在路上与在书上|https://v.qq.com/x/cover/1jv433683n9m5h4/v03212aom96.html]]

''书摘:''


<<<
自然的法则是人类发明的,就像鬼的存在一样。逻辑学、数学也都是如此,所有值得赞美的事,也都是人类的发明。这个世界也是人类所想象出来的,整体来说也就是一种灵界的存在。在古代,我们所居住的这个美妙的世界就被如此视之,它由鬼神所统领,我们之所以能看到这个世界,就是因为鬼神让我们看见,他们是摩西、耶稣基督、释迦牟尼、柏拉图、卢梭、杰弗逊、林肯等等,牛顿是非常好的一位,可算其中最好的一位,所以我们的常识就是由过去成百上千的鬼神所构成的,他们企图在人的生命当中找到他们的地位。”
<<<

<<<
你相信鬼吗?” 我说:“不相信。” “为什么?” “因为他们没有科学依据。” 我的答案不禁让约翰笑了起来,我接着说:“他们的存在不占用任何空间,也没有能量,因此根据科学定理,他们只存在于人的心中。”
“当然,科学定理也不占用任何空间,也没有能量,因此也只存在于人的心中,所以完全科学的态度就是既不相信鬼,也不相信科学,这样你就安全了。然而这样一来,你就没有多少可以相信的了,但是唯有这样才是科学的态度。”
<<<
<<<
"在你经过大城市的工业区时,你就会看到整片所谓的科技区。门前围了高高的铁丝网,大门紧锁,告示牌上写着"禁止跨越"。在一片污浊的空气之后,你看到的是奇形怪状而又丑陋的金属物和砖块,也不知用途为何。它的主人你永远也见不着,它为什么在那儿也没有人知道,所以你感受到的只是一股莫名的疏离感,仿佛你并不属于那儿。它的主人和知其来由的人可不希望你在附近闲逛,这些工厂让你在自己的土地上竟有陌生的感觉。它特殊的形状、外观还有神秘感,一切都在叫你"滚开"。
你知道这一切总有解释,而且它们毫无疑问地对人类间接地有些益处,但是这些益处你没看见,你只看见"禁止跨越"和"保持距离"的牌子,你只看见人们像蝼蚁一样为这些庞然巨物做工。于是你想,即使我是它们的一分子,也不过是另一只做苦役的蝼蚁罢了。"
<<<
<<<
有些东西你忽略是因为它们非常细微,但有些却是因为它们过于庞大。
<<<



<$list filter="[field:book_title[私人阅读史]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[科学哲学]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[[我书架上的神明]]上下册上周已经看完并简单做了一些归纳(见[[我的秘密书架]])。但总感觉对此书应该写点什么,也许读完意犹未尽吧。

严格来说此书是百人短文合集,不算传统意义的书。也正是其合集形式,才是其价值,能一口气了解书中上百人的读书故事和历程。每个人性情不同,读书的方向不同,书架上的秘密自然各异。而相同的是,这波60年代(或更早期)人,都对书有如饥似渴的渴望,对读书之事有敬畏之心,对治学有谦逊和严谨的态度,对人生有珍惜和知足心态,对现实有冷眼旁观的冷静,对政治有欲言又止的苦恼,对未来有不惑和期望。这在每个人的读书故事中,笔墨之间,皆别有机杼(见开启那遥远时代的漂流瓶 [[1|开启那遥远时代的漂流瓶]]  和 [[2|开启那遥远时代的漂流瓶2]])。这是此书价值之一。

价值之二,在于百位学人对所列书单的解读和荐语,书单道在其次。所荐书目之所以被称作“我的秘密书架”(又名 我书架上的神明),都和作者有不一般的因缘,或是雪中之碳,或黑暗中的灯,或是痛苦时的避难所,或是困惑时的醍醐,或是彷徨时的棒喝,或是学术之径的阶梯,或是拂去心灵灰尘的甘露。有些书目被作者列为枕边书,一辈子常读常新之书。所以荐书者对所荐之书都有非一般的认识和解读,或人,或事,或物,言语不虚。故此两本书可以作为以后找书籍的重要参考资料。

2018年03月13日周二下午09:45:38
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[穿T恤听古典音乐]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[突然,响起一阵敲门声]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!This is an encrypted Tiddler
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[笑林广记]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
前面提到[[中文阅读是基于词的阅读|为何素心素地素文方是大文章]],在读者阅读过程中会自动的进行对句子进行词组切分。古代中文,也就是文言文是没有词这一说法的,字是最基本的单元,字之上就是句子了。词的概念算起来也就是不到百年,所以在中文阅读中,字仍然是影响阅读的重要因素之一。

西语中词的基本单位是字母。在西语阅读过程中,[[眼球的阅读轨迹|阅读行为眼动模型]]基本上落在一个单词的中间偏后部位。中文字的组成属于部件结构 --- 是由若干个部件组成的,那么中文字的构成部件,也就是偏旁部首等是否会影响中文阅读那?

研究结果显示。中文字如果结构复杂 ---笔画比较多的字与笔画少的字或词相比,读者对笔画数多的字或词的识别更困难,所需时间更长,这被称为“笔画数效应”。读者在阅读过程中,对汉字的注视时间和笔画数有关 --- 西语体系中与字母的长度有关,当汉字笔画从1画增加到24画时,其注视时间增加了106ms。(平均每增加1画,注视时间就增加4.6ms)。

和西语阅读单词长度影响眼球运动轨迹一样,中文字的笔画数也影响眼球注目位置,特别是注目范围内的首字的结构。首字笔画数之所以能对目标词的首次注视位置造成影响,可能是由于汉语读者在阅读过程中从副中央凹区域获得了双字词首字的笔画数信息,此信息将引导着读者的眼跳行为。

邻近词(大小)效应(或称家族效应,neighborhood size effect/family size effect)指对单词的识别时间受那些与该单词具有相似词汇特征的邻近词的影响。单词的正字法邻近词越多,对其加工的速度越快。家族效应同样也适应于中文阅读,在汉语词汇识别时表现出正字法邻近字的促进效应以及高频邻近字的抑制效应。

2018年08月13日周一上午12:14:15////
中国现在的学者不仅是没有人敢说话了 --- 做一个有良知的公知和社会代言人,也没几个甘于寂寞潜心做研究了。现在学者的知名与否的界定标准是:参与会议的多少和忽悠到研究经费的多寡。如果一个社会的中坚不坚,何谈一个国家和民族对身份的认同以及从何来到何处去的探索。这一切的牢骚皆因这本书有感而发:一个老外不远万里来到中国义务支教,进而驻扎东北农村,潜心对中国当代农村进行观察和思考,集结成《东北游记》一书。

《东北游记》与前些年一本叫《江城》的书风格很像,都是第三只眼睛看中国,只不过《东北游记》把目光聚焦在了东北三省。事实上《东北游记》的作者迈克尔•麦尔与《江城》作者何伟(彼得·海斯勒,著作还有《甲骨文》)都是和平队  <<ref "[1]">>  来华志愿者队员,也都为中国女婿。近些年除了每年春节返乡时节大家对三农问题发一两声不痛不痒的牢骚之外,鲜有关于中国农村的书籍和研究。''而《东北游记》的价值就在于作者难能可贵的扎根调研精神与身在其中而又以外国人旁观者的眼光来观察、思考和比较,尽量的剔除政治污染和地域性先入为主的偏见思维,而作为对中国及东北兴趣意志的表象世界。''

如果有人问起我 --- 一个中国原住民--- --- 对东北的了解,我想除了我知道近代历史中东北作为中日俄纷争的苦楚之地外(麦尔在书中是这么形容东北的:''19世纪末,西方旅行者来到这里,把这片冰天雪地的边疆比作阿拉斯加;然而,他们的下一代却写道,这里是“冲突的摇篮”,是亚洲的阿尔萨斯-洛林''<<ref "[2]">> 。),就剩下赵本山、二人转、下岗、妓女、三亚东北人以及直播女这些标签了。这些对东北看法的观念性标签也许只是一些外在的表象,而真正的原因和东北历史的内核是什么?东北作为中国地域板块中最具特色和争议的问题所在又是什么?东北文化的核心价值是什么?东北的潜在力量和未来走向又在哪里?等等这些问题也许除了外省人之外,东北人也更想弄清楚的吧。


__//2018年05月17日周四下午05:53:15//__

PS. 看纪实文学就像看纪录片,是一种现实性体验,和纯文学的区别就是非想象和虚构以及无论美丑但真实的魅力。中国好纪录片少之又少,现存的纪录片不是捧臭脚,就是跪舔式的阿谀;不是洗脑式的价值灌输,就是意淫式的自我高潮。真正好的纪录片是一个真实的过程,记录、信息传递和人性启蒙。同样,中国纪实文学作品也同纪录片一样的现状。事实上中国是最不缺少现实题材的土壤,网友神侃为这是一片神奇的国度,远且不说,就改革开发四十年,经济的飞跃带来的阶级分化、社会价值观的滞后带来的国际和国内问题、被经济撕裂的信仰带来的人性痛苦和社会问题、互联网浪潮下的社会道德底线和政府作为、逐渐分层的社会造成的不同族群的个性化和主流价值观的冲突........这些不都是绝佳的现实题材和魔化题材吗?奈何无人来做!

//2018年05月18日周五下午04:41:17//

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "和平队(英语:Peace Corps),是根据1961年3月1日美国肯尼迪政府10924号行政命令以:“促进世界和平和友谊,为感兴趣的国家和地区,提供有能力,且愿意在艰苦环境下在国外服务的美国男性和女性公民,以帮助这些国家和地区的人民获得训练有素的人力资源。”

而成立的一家志愿服务组织,并于同年得到美国国会以通过《和平队法案》的方式授权。和平队队员需要为其义务服务两年。

截至2013年,先后有接近22万美国公民参加过和平队的工作。目前,和平队在140个国家有活动。

根据和平队自身的宣称,其有三大宗旨:

* 为愿意接受和平队帮助的国家和地区提供训练有素的人员
* 促进受助国人民对美国人民的了解
* 促进美国人民对世界其他各国人民的了解。 ">>

 <<footnotes "[2]" "普法战争后法国于1871年割让给德国的领土。1919年第一次世界大战后,这块土地归还法国。第二次世界大战期间,被德国占领,后又归还法国。 ">>
@@.note
''Keywords:'' {{!!description}}
@@

每个人的人生结局都一样,而过程千差万别。

人生,就是活着的过程。

那么,为什么人要还要在乎人生的结果?而不去注意过程、在意每一个当下那?

可能这就是人类的悲哀!

赚钱是目的,赚钱的目的是为了人生过程,如果人生的过程,空有目的又有何用?

人生不能重来。

当消耗了人生10年时间而获取人生未来3年的结果,这样的人生不是空耗7年吗?除非是换取未来23年的结果。即便这样想一想也是不值得的,因为过去的10年再也回不来了。

那么为什么不这样过那:人生10年,每一天都当是等值的、等价的,既不贬值,也不增值。这样不是比上一种人生活法更值得吗?

那么什么样的人生是值得的?这是关键。

肯定不是以金钱多少来衡量,也一定不是以拥有什么样的社会地位来评价,这些都是身外之物。身外之物的对立面是什么?是形而上的本我,即“我思故我在”的我。

本我的人生价值的考量没有标准 — 因为标准都是身外的体系,唯有自我来批判才是最终裁决者。那么自我的人生价值考量的标准活着基础是什么?

我想,唯有:快乐!

快乐是一切形而上的活动基础,例如幸福、满足感、荣誉等等。快乐是一切形而上的元,超越快乐,是更高精神层面的活动。

这样说来,人生价值的基础是快乐!

快乐的活好每一天即等值人生!

//2019年05月14日周二下午11:43:33//
思维系统1和系统2都有其明显的个性:系统1自主性很强,是不受控的--- ---无法自行阻断,消耗体能也微乎其微,所以运行起来悄无声息,无法察觉。系统2,运算能力很强,同时也是消耗体能的大户,所以系统2天然具有惰性,需要启发和引导其运行。所以,从思维的逻辑上,思维系统会挑选消耗能量小的解决方案从而输出,消耗能量小的解决方案特性之一就是:简单(当然还有直接、明了等其它属性)!

//2018年01月29日周一下午10:50:09//

这一“简单法则”,在其它领域也得到了验证,例如“奥卡姆剃刀”。

`奥卡姆剃刀`,又称“奥坎的剃刀”,拉丁文为lex parsimoniae,意思是简约之法则,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1287年至1347年,奥卡姆(Ockham)位于英格兰的萨里郡)提出的一个解决问题的法则。“奥坎的剃刀”简约法则核心即,''“如果关于同一个问题有许多种理论,每一种都能作出同样准确的预言,那么应该挑选其中使用假定最少的。尽管越复杂的方法通常能做出越好的预言,但是在不考虑预言能力(即结果大致相同)的情况下,假设越少越好。”'' 简单的理论比复杂的理论更好验证。后世在他的基础上进行了很多更加丰富的规范化描述和补充。牛顿说:''“我们需要承认,自然事物各种现象的真实而有效的原因,除了它自身以外再无须其他,所以,对于同样的自然现象,我们必须尽可能地归于同一原因。”'' <<footnote [1] "Primary source: Newton (2011, p. 387) wrote the following two philosophizing rules at the beginning of part 3 of the Principia 1726 edition.
    Regula I. Causas rerum naturalium non plures admitti debere, quam quæ & veræ sint & earum phænomenis explicandis sufficiant.
    Regula II. Ideoque effectuum naturalium ejusdem generis eædem assignandæ sunt causæ, quatenus fieri potest. ">>  罗素提供了奥卡姆剃刀的一个特别版本:“如果可能,将已知实体组成的结构,替换为未知实体的推断。”

<<imageSlider  [[https://cl.ly/pFbu/download/%E5%9B%BE%E8%A7%A3%E2%80%9C%E5%A5%A5%E5%8D%A1%E5%A7%86%E5%89%83%E5%88%80.jpg]]    "图解“奥卡姆剃刀">>

虽然“奥卡姆剃刀“并未思维科学领域的研究成果,但结论或者决策结果符合认知科学的运行逻辑。就行其它领域对此的论证一样:

审美和宗教领域:“自然是简单的,关于自然的简单假设更可能是正确的”

数学:奥卡姆剃刀的形式之一,是基础概率论的直接结果。根据定义,任何假设都会带来犯错误概率的增加;如果一个假设不能增加理论的正确率,那么它的唯一作用就是增加整个理论为错误的概率。

哲学:卡尔·波普尔认为,对于简单理论的偏爱并不需要诉诸实践或者审美考虑,只需要使用可证伪性标准即可得出:比起复杂的理论来说我们偏爱简单的理论,“因为它们涵盖了更多的经验内容,因为它们更容易检验”

......

简单!在看看一下“萨顿定律”怎么诠释的。

`萨顿定律`,源于一名耿直的银行抢劫犯匪威利·萨顿,据说他在回答抢银行的原因时回复:“因为钱就在这里。” 够直接!这完全符合奥卡姆剃刀原则,我想法官也不会否认。而萨顿定律的应用主要在医学上。在医学诊断时,先考虑较明显、较可能确认的项目,因此应该针对最可能确认的项目进行测试。萨顿定律也可以用于工程诊断,像是计算机程序的除错等。

“因为钱就在这里!”一切从最简单(显而易见)的入手!

萨顿定律在对需要简单快速做出判断的“除错”是显而易见的有效指导。而在另一需要简单判断的场景,席克定律就能派上用场,尤其是交互设计方面。

`席克定律`,是英国心理学家William Edmund Hick提出,其理论指出当选项增加时,下决定的时间也增加。用现实例子来解释,这就是你''为什么在餐馆经常见到简短的菜单——他们不想把顾客吓跑。''

席克定律运用到设计中。例如设计网站时,尽量保持导航栏可能简洁,只有少数几个选项。如果有必要,将一些页面分组放入下拉菜单,访客就更容易对选项归类,并且迅速做出决定。

席克定律的核心也是简单,因为复杂的选项会导致决策时间加长,从而影响决策。这就充分说明了系统2的懒惰性。

以上三个定律或原则的核心都是简单,只不过从不同的角度或者论证方法就行了总结归纳,并被应用在不同的领域。而归根结底还是系统1和系统2的两个特性造成的。

这就要求我们在实际应用中做到:''尽可能的把事情简单化,从而减少系统2的能量消耗;但是简单不等于要简陋,简陋会导致系统1直觉性判断。''


//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[简明逻辑学]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!!结构
 <<textSliderNoButton "''管理科学''" "
*[[奥卡姆剃刀 (Occam’s razor)|简单,简单,再简单]] ([[参考|http://www.safalniveshak.com/latticework-mental-models-occams-razor/]])
*[[帕金森定律 (Parkinson’s Law)|https://www.farnamstreetblog.com/2013/12/parkinsons-law/]]
*[[过程与结果 (Process versus Outcome)|https://www.washingtonpost.com/business/barry-ritholtz-outcome-or-process--what-investment-focus-succeeds-over-time/2014/02/21/66e5b4c4-98cb-11e3-b931-0204122c514b_story.html]]">>

返回[[思维模型|Thinking Models]]

<span title="箭术与禅心"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[箭术与禅心]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[系统之美]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

最近连续看了好几本大家小书,小书是指文章的篇幅短小,可以速阅。除了解些许大家故事轶闻,收获最大的莫过于受大家娓娓道来的文风的侵染。越是宿儒名家,其作品语言风格越像是听邻人讲话。其言情也必沁人心脾,其写景也必豁人耳目;其辞脱口而出,无矫揉妆束之态;以其所见者真,所知者深也。用王国维的话说”须有肫挚 <<footnote "[1]" zhūn-zhì,真挚诚恳。">> 之感情,为之素地,而后此原质乃显。“(见[[一个人的书房]])

这些耳濡目染,微风细雨的感受,也正是我一直以来所寻求的。之前从来没有在意过自己的语言性格,写和看的多了,开始对自己输出的每个字在意起来,在意其美不美,在意其是否文能达意,在意其幽默,在意其思想高远。而在意多了也就在太在意中迷失了自己,为了追求简约而好古,为了达到高远而开始掉书袋……林林总总,不知所终。钱钟书在翻译《浮生六记》也颇有类似感悟:


<<<
吾深信此本色之美。盖做作之美,最高不过工品、妙品,而本色之美,佳者便是神品、化品,与天地争衡,绝无斧凿痕迹。近译《浮生六记》,尤感觉此点。沈复何尝有意为文?何尝顾到什么笔法被澜?只是依实情实事,一句一句一段一段写下来,而结果其感人魔力,万非一般有意摹写者所能望其肩背。称之为化工,也未尝不可。文人稍有高见者,都看不起堆砌辞藻,都渐趋平淡,以平淡为文学最高佳境;平淡而有奇思妙想足以运用之,便成天地间至文。
<<<

在同一本书,江寄萍继续钱钟书的话题,继谈“本色的美”。“我以为他(钱钟书)的话总未说尽,所以在这里给补充一点,虽然也仅是一点点而已。"江寄萍列举了一些名不见经传直抒胸臆的典范之作:


<<<
孟子说:“…….逾东家墙,而搂其处子,则得妻;不搂则不得妻。则将搂之乎?”这是何等富有自然的美的文章,道学先生恐怕早已舌挢不下了。

《郑风》中的这一首:
子惠思我,褰裳涉溱;
子不我思,岂无他人!
狂童之狂也且!
<<<

		
除此,清末文人袁中郎、李卓吾、徐文长、金圣叹等皆提倡本色之美;其意若曰:若非出口成章便不是好诗,若非不加点窜,便不是好文。金圣叹谓诗者心头之一声而已;心头一声有文学价值(如“悠然见南山”,“举头见明月”,“衣沾不足惜”之类)念出便是天下第一妙文;心头一声本无文学价值,任汝如何润饰,皆无用也。

如是我闻。香象渡河,羚羊挂角。<<footnote "[2]"  《沧浪诗话·诗评》称道李杜等盛唐诗人诗“如金鳷〔鳷(zhī)〕传说中的异鸟。(大鸟)擘海,香象渡河”,是赞美其雄壮。严羽又强调诗歌应写得浑然天成,不露文辞斧凿痕迹,即所谓“如羚羊挂角,无迹可求”(《沧浪诗话·诗辩》)。">>

''当以感情素地为一切行文之根本。素心素地素文方是大文章。''


2018年03月31日周六上午12:06:30

[[为何素心素地素文方是大文章]]
<span title="红书"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[红书]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[纳博科夫短篇小说全集]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="经济学的思维方式"><a href={{!!douban}}><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[经济学的思维方式]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
`field`参数设置为`note`,tidder加上下面代码,现实备注或者说明。

```
<div style="background:#c8d4d7">
{{!!note}}
</div>
```
<<<.tc-big-quote
凡所有相,皆是虚妄。若见诸相非相,则见如来。--《金刚经》
<<<

<$list filter="[field:topic[维摩诘]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$list filter="[field:book_title[维摩诘的花雨满天]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[维特根斯坦传]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[[深入缘起,断诸邪见。|2018年01月09日 周二下午 05:32:52]]

怎么讲“缘起”?

要“缘起性空,性空缘起”<<footnote "[1]" "佛法的中观正见。">>,“因缘法从因缘的无明一念而起”,“一念灵知,觉性常明,久之复生无明”。

什么是“缘起性空,性空缘起”?

佛说一切法皆从因缘所生。性空,不是无,没有;性空是“断见”。《楞严经》有段话非常重要: 

<<<
如来  <<ref "[2]">> 藏中,性色真空,性空真色,清净本然,周通法界。随众生心,应所知量,循业发现。世间无知,惑为因缘,及自然性,皆是识心,分别计度。但有言说,都无实义。 
<<<

佛在此话之前一路讲唯物的地、水、火、风,一切物质是缘起性空的,是“非因缘,非自然性”,这应该是讲物质的最高理论物理,现代的理论物理已经快走到这个边缘了。

从思维的逻辑来讲,法起因缘,缘起性空、性空缘起,缘起断念。

//2018年01月20日周六下午09:24:51//

什么是自然物质世界的“非因缘,非自然性”?是指本体而言,是法身境界。性空的空,不是因缘空得了, 也不是自然空,自然空是自然外道。所以讲本体而言,是非因缘,非自然性;讲起用而言,世间一切法都是因缘所生,并非自然生,也无主宰,因为它是性空缘起。所以讲缘起之理,要修证,要能深入缘起,才能断诸邪见。换言之,如果你没有证悟到缘起性空的境界,你即使学佛,许多的知见仍然还是邪见,因为没有证道。

好难理解!

从现代思维科学来看,我是主体,是物质的,我的属性是“非因缘,非自然性”的(这里的非自然,应该是相对空来讲,类似“我思即我在”的意思);法是精神的,因缘所生,非自然。所以,要修佛法,需要在无明的境界,即断诸邪见性空(生而再断,非空。非空,也无可断)的状态,进行证悟,什么时候证悟到了空的境界,即见佛法。从精神世界来,到自然世界去,修而证道即悟,人间即佛土 <<footnote "[3]" "成佛的境界,也就是代表了学佛要求证、要到达的境界,这境界也就是佛土。从修持的因上来讲,叫做境界;从修持的果上来讲,称为佛土。 ">>。

//
''Modified:''<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
 

--- 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "如来,佛的十大称号之一。如来,“就像来了一样”。如指真如,含两层意思:凭借真如之道,通过努力,不断累积善因,最后终于成佛,故名如来,也就是真身如来;通过介绍真如之道,使众生增长智慧、消除烦恼、获取利益,故名如来,也就是应身如来。也有解释作“如诸佛而来,故名如来”。民间常以如来、如来佛专指佛教创始者释迦牟尼佛,释尊,即当时的悉达多太子。">>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[罗伯特议事规则]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们在直登天堂,人们在直下地狱。

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of light, it was the season of darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to heaven, we were all going direct the other way.
//《双城记》 查尔斯·狄更斯//
<<<


<<<
我羡慕那些来自乡村的人,在他们的记忆里总有一个回味无穷的故乡,尽管这故乡其实可能是个贫困凋敝毫无诗意的僻壤,但只要他们乐意,便可以尽情地遐想自己丢殆尽的某些东西仍可靠地寄存在那个一无所知的故乡,从而自我原宥和自我慰藉。
//《动物凶猛》/王朔//
<<<

<<<
洛丽塔,我生命之光,我欲念之火。我的罪恶,我的灵魂。洛一丽一塔;舌尖向上,分三步,从上颚往下轻轻落在牙齿上:洛一丽一塔。

Lolita, light of my life, fire of my loins, my sin, my soul. Lo-lee-ta: the tip of the tongue taking a trip of three steps down the palate to tap, at three on the teeth. Lo.Lee.Ta. //
《洛丽塔》/ 弗拉基米尔·纳博科夫//
<<<


<<<
幸福的家庭都是相似的,不幸的家庭各有各的不幸。

All happy families are alike; each unhappy family is unhappy in its own way.
//《安娜·卡列尼娜》/列夫·托尔斯泰//
<<<


<<<
很多年以后,奥雷里亚诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个20户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活像史前的巨蛋。

Many years later, as he faced the firing squad, Colonel Aureliano Buendía was to remember that distant afternoon when his father took him to discover ice. At that time Macondo was a village of twenty adobe houses, built on the bank of a river of clear water that ran along a bed of polished stones, which were white and enormous, like prehistoric eggs.
//《百年孤独》/ 马尔克斯//
<<<


<<<
他是个独自在湾流中一条小船上钓鱼的老人,至今已去了八十四天,一条鱼也没逮住。

He was an old man who fished alone in a skiff in the Gulf Stream and he had gone eighty-four days now without taking a fish.
//《老人与海》/海明威//
<<<


<<<
我已经老了。

有一天,在一处公共场所的大厅里,有一个男人向我走来。他主动介绍自己,他对我说:我认识你,永远记得你。那时候,你还很年轻,人人都说你很美。现在,我是特地来告诉你,对我来说,我觉得现在你比年轻的时候更美,那时你是年轻女人,与你那时的面貌相比,我更爱你饱经沧桑的容颜。

ONE DAY, I was already old, in the entrance of a public place a man came up to me. He introduced himself and said: I’ve known you for years. Every-one says you were beautiful when you were young, but I want to tell you I think you're more beautiful now than then. Rather than your face as a young woman, I prefer your face as it is now. 
//《情人》/玛格丽特·杜拉斯//
<<<


<<<
白嘉轩后来引以为豪壮的是一生里娶过七房女人。
//《白鹿原》/陈忠实//
<<<


<<<
婊子无情,
戏子无义。
婊子合该在床上有情,
戏子,只能在台上有义。
每一个人,有其依附之物。娃娃依附脐带,孩子依附娘亲,女人依附男人。有些人的魅力只在床上,离开了床即又死去。有些人的魅力只在台上,一下台即又死去。一般的,面目模糊的个体,虽则生命相骗太多,含恨地不如意,胡涂一点,也就过去了。生命也是一出戏吧。
//《霸王别姬》/李碧华//
<<<


2018年04月21日周六下午03:42:17
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[老人与海]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<span title="耕种 食物 爱情"><a href={{!!douban}}><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[耕种 食物 爱情]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
"""
Weekly43:10.16~10.22
读书:《耳食录》

这本书堪称睡前故事,每晚都会看一些,乐此不疲的原因,就在于此书书写优美,故事怪力乱神,伴眠可以浮想联翩。如若说看次书何得?唯有此书得遣词造句了,至于内容和《子不曰》以及《阅微堂笔记》不相伯仲。
系统1的主要特性之一是联想,联想与质量和数量无关,主要取决与连续性和就近性。

联想机制的不断激活也是自动完成的。我们(系统2)具备某种能力去控制记忆的搜寻活动,也能对其进行编辑,这样一来,在特定情况下我们才可以集中精力去追踪某个事件。

佛学中的断念。

//2018年02月19日周一上午12:04:00//
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[胡椒的全球史]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[胡适谈读书与做人]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[img [https://cl.ly/p1dA/snipaste_20180123_225518.png]]

//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

系统1的运行是不由自主的,不可阻断的行为;系统2的运行需要消耗体能,是身体自身自主规避的懒惰行为。所以,我们更趋向在一种轻松的场景--- --- 没有阻碍、没有新情况、没必要转移注意力或投入更多精力 --- ---下思考。相反,在紧张的环境下 --- --- 未来不可预知、陌生、坏心情和不安全 --- --- 思考,就要消耗更多的体能,系统2就要发挥其自身的特性就行实施控制,从而达到趋于放松的环境。介于紧张和放松之间,被称称为认知放松度。


所以了解影响认知放松度的因素至关重要,因为这些因素直接左右认知输出。例如现在社会到处充满的广告,就是一种影响我们认知的行为,在对反复出现的广告商品和一款陌生商品之间进行选择的时候,人们对广告出现的商品的好感度大于陌生商品,事实上陌生商品的质量未必亚于广告商品,这就是曝光效应,是一种认识的错觉。认识错觉不仅是[[视觉错觉,如缪勒-莱耶错觉|建立自己的思维框架,避免认知错误陷阱]],还有思维错觉。

这种趋向轻松的选择,是生物的笨能反应,不仅是人,动物也具有,因为重复曝光的结果有益于机体适应其所处的有生命和无生命的环境。这一效应能使机体鉴别出安全的物品和栖息地,是最为原始的社会性依附的基础。因此,重复曝光构成了社会组织和社会整合的基础,而社会组织与社会整合又是心理稳定与社会稳定的基础。

一些洗脑性行为就是利用了这种认知度放松效果,利用对一些使人脑放松的因素并反复进行体验,想想出一种未来的预知,从而达到感觉真实而又良好的认知结果。这里反复和强化预知这两种行为起到关键作用。

那么,我们在现实生活中怎么防范这种认知错误那,这有两种情况:一、面对未知而认知紧张的情况下,找到使自己认知放松度提高的要素,从而达到放松,这是系统2在起作用;二、在认知放松度很高的情况下,一般会马上给出认知结果,这时候要警惕这种直觉输出,错觉或者偏见机率最高。



''生活中常见的场景:''

//股票代码上口,回报率开始的时候偏高。//

//如果你很在意自己在别人眼里是否值得信赖、是否聪明睿智,那么说话时就言简意赅吧,能用简单句的时候就别用复杂句。//

//用浮夸的语言来表达熟悉的概念是一种智商低下、可信度差的表现。//<<ref [1]>>

//任何缓解认知紧张的做法都会有所帮助,假设你需要写一则能让接收方相信的消息,首先应该让字迹更清晰,如果你使用彩色字体的话,亮蓝或大红的文字会比绿、黄、灰蓝等色调更容易让人相信文字内容的真实性。还有就是尽量简洁便于记忆。//

//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

---


@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "普林斯顿大学丹尼·奥本海默(Danny Oppenheimer)的文章:《不切实际地运用华丽辞藻的后果:使用长句毫无必要》。 ">>
系统2的一大主要功能是监督和控制思想活动以及由系统1引导的各种行为,使得一些想法直接体现在行动上,或者抑制或改变其他想法。系统2具备推理能力,它很谨慎,但对一些人而言,这个系统也是懒惰的。

系统2的属性之一就是记忆,是冲动、凭直觉的。是不需要消耗多少体能的思考行为。

所以,“懒人”更容易利用系统1,属于直觉型的。但是,并不说明系统2思维的人并不是“懒人”。

另外一方面,聪明并不是指具有很好推理能力的人,也指在记忆中搜寻相关信息和在必要时调动注意力的能力。也就是说,系统1和2都有聪明的属性。

那么实际生活过程中,什么是正确的思考行为那?

那就是不要做一个''“懒惰的人”'',克服系统2的懒惰属性,加强自我控制,不要过于自信的信任自己的直觉,对直觉再进行一下复核,也就是系统1给出的直觉后,让系统2也转起来。这种人被称之为''“勤快的人”'',他们更机警,思维更活跃,不会满足于貌似正确的答案,对自己的直觉也常持怀疑态度。心理学家基思·斯坦诺维奇认为他们更''理性''。

实验表明,自我控制能力的孩子在智力测验中得到更高的分数,控制其注意力的能力和控制其情感的能力之间有着紧密的联系。也就是,控制能力的提高可以提高认知能力。能高认知能力的人,不一定具有高的控制能力。也就是说,高智商并不能消除成见,高智商并不代表好脾气。肤浅的或者惰性思考是一个反思缺陷,是一个理性错误。

''总结:''没有“笨人”,只有“懒人”,提高控制力,做一个“勤快人”。

//2018年01月16日周二下午05:45:00//
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[色情]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<<<
在古希腊,嫖妓是日常生活的一部分,卖淫属于合法行为,甚至还有雅典的国立廉价妓院,据说是由古希腊七贤之一的立法者梭伦建立的。同时期的东方,公元前8世纪,东西方不谋而合,妓业昌盛,丞相管仲建立了中国历史上第一个官方妓院,把妓女纳入国家公务员编制,由国家财政专款专用供养,设立专门机构,实行妓女职业化和国营化。全世界任何统治阶级都是一样的,行为的合法和不合法要看是否有利可图和便于维护统治权。清代的褚学稼在《坚瓠续集》卷中说:“管子治齐,置女闾七百,征其夜合之资,以充国用,此即教坊花粉钱之治也。”古希著名演讲家嫁名狄摩西尼有一个著名的演说:“如愿偿欲,吾辈有妓;嘘寒问暖,吾辈有妾;延子嗣、守家业,则吾辈有妻。”(《诉涅艾拉斯》)在古代,并不像现代人一样,在嫖妓这件事上背上沉重的道德包袱。
<<<

古希腊,交际花属最高级别的妓女,跟其他妓女不同,交际花不止为客人提供性服务,也并非逐次收费。古希腊文中,“交际花”一字本作“伴侣”解。这有点像日本的艺妓,更像中国的青楼女。青楼在中国文化中的地位可以用屋之横梁来形容,它不仅是文人骚客把酒弄欢,抒发请操场所,更是中国歌舞声乐文化的发源地和承载者。《全唐诗》将近5万首中,有关妓女的达2000多首。宋代“群妓合金葬柳七”,说的就是谢玉英、陈师师一班名妓凑钱安葬柳永的事迹。到了近代民国时期,更有甚者,民国三公子之一,袁世凯次子袁克文去世时候,有上千名妓女浩浩荡荡的为其送葬。芙里尼也就是这样一位青楼女子。


芙里尼的美貌当时艳压群芳,成为炙手可热的倾国人物,当然夜资也高昂,她的收入甚至多到能够让她资助忒拜城墙的修复。“婊子”也并非全部无情,她对一些颇具才情的人雨露均沾,例如主动为哲学家第欧根尼·拉尔修献身,而对一些为富不仁的富人和国王开出天方夜谭的价格。

<<imageSlider  [[https://cl.ly/r35o/%E9%98%BF%E8%8A%99%E7%BD%97%E7%8B%84%E5%BF%92.jpg]]    "《阿芙罗狄忒》作者:克尼多斯 | 卢浮宫">>

芙里尼也有不少情人,著名的雕塑家普拉克西特利斯就是其中一位,他的许多作品就是以芙里尼为原型,例如著名雕塑克尼多斯的《阿芙罗狄忒》,这个雕塑描绘的是阿佛洛狄忒正在准备沐浴,以重新获得贞洁(古希腊对话录作品《爱》(Erotes)中曾经讲了一个故事:尼多斯的阿佛洛狄忒雕塑是如此的美丽、性感、栩栩如生,以至于当它被摆放在尼多斯岛一个神庙中时,一个年轻人竟在半夜闯入了神庙,企图和她共赴巫山云雨。可见芙里尼的魅力,已经穿透了冰冷的大理石,散播到了蠢蠢欲动的荷尔蒙中)。

<<imageSlider  [[https://cl.ly/r28t/%E8%8A%99%E4%B8%BD%E6%B6%85%E7%9A%84%E5%AE%A1%E5%88%A4.jpg]]    "《芙丽涅的审判》作者:何塞·弗朗帕">>

芙里尼人生中最浓墨重彩、也最被世人津津乐道的一笔,莫过于对她的审判了。这是由于她被一个旧情人控告亵渎厄琉息斯的神明,法庭的审判眼看就要对她不利。此时芙里尼轻揭罗衣,露出她美丽的双乳,使在场的法官为之瞠目结舌,最后作出了无罪的判决。在古希腊的文化中,身体的美丽往往被认为体现了神性或是证明了神明的眷顾,从而对芙里尼引罪不究(这就是著名的热罗姆(Jean-Léon Gér?me)的《法庭上的芙里尼》油画)。谁说不是那,美貌生而有之,是上天的馈赠,是一种资本,也是一种利器。

<<imageSlider  [[https://cl.ly/r1Cf/%E6%B3%95%E5%BA%AD%E4%B8%8A%E7%9A%84%E8%8A%99%E9%87%8C%E5%B0%BC.png]]    "《法庭上的芙里尼》作者:热罗姆  |  汉堡艺术馆藏">>

后世也有很多人恶搞这个传说和名画。比如下面这幅画,为讽刺1884年美国总统候选人詹姆斯·G·布莱恩(James Gillespie Blaine)所作。

<<imageSlider  [[https://cl.ly/r2PJ/download/%E8%AE%BD%E5%88%BA1884%E5%B9%B4%E7%BE%8E%E5%9B%BD%E6%80%BB%E7%BB%9F%E5%80%99%E9%80%89%E4%BA%BA%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7G%C2%B7%E5%B8%83%E8%8E%B1%E6%81%A9.jpg]]    "讽刺1884年美国总统候选人詹姆斯·G·布莱恩">>

当然美丽也是一种力量,可人的女子往往会在云淡风轻中成为艺术和历史的配角。据说在一次波塞冬(波塞冬希腊神话中的,宙斯的哥哥,黑帝斯的弟弟)节上芙里尼当众宽衣解带,长发披肩,在众人瞩目中缓缓步入海中。此情此景正好击中了画家阿佩勒斯(Apelles)的艺术灵感,使他创作出了著名的《爱神从海中诞生》。后世所有与爱神维纳斯诞生有关的画作,都受到阿佩莱斯作品的启发。比如上一篇文章中提到的画家桑德罗·波提切利。艺术家因美人而不朽,美人因艺术家而重生。

<<imageSlider  [[https://cl.ly/r2wQ/%E5%87%86%E5%A4%87%E4%B8%8B%E6%B5%B7%E7%9A%84%E8%8A%99%E9%87%8C%E5%B0%BC.jpg]]    "《准备下海的芙里尼》作者:西米尔拉德斯基">>

注://看高清大图请前往[[Google Arts & Culture|https://artsandculture.google.com/]],本文图片均来于此。//

2018年04月20日周五下午10:24:04
```
“从女巫初现人世,就没有父母、儿女、配偶、家庭。
她是一个魔怪、一块陨石,弄不清是从哪儿来的。
上帝啊!谁敢走近她?她又待在哪里?
荆棘丛生的野林、人烟不至的荒地,都有她的踪影。
夜里她则栖身在一张古老的桌子下。
大家害怕撞见她,这使她更加孤独。
她的周围像围了一道火篱笆,谁想过她还是个女人?
即使过着这么可怕的生活,她还是保持着张弛有度的女性活力、女性的吸引力……”  
----米歇莱《女巫》
```

<$details summary="克劳迪奥·布拉沃《女巫》" class="notification">
[img[https://one.rizi.me/Photos/webphoto/claudio bravo painter chile.jpg]]
</$details>

女巫应该是人类最古老和神秘的职业,先于宗教,不属于神,不属于人,从事人神之事,介乎天人之间,是神与人的中介人。世说只有阴性之人才通灵,所以中外文化中,凡巫,必为女性为灵媒,如中国东北萨满女巫、壮族的雅禁(俗称禁婆)。古老的《礼记·檀弓》中有这样的记载:“岁旱,穆公召县子而问曰:‘吾欲暴巫而奚若?’曰:‘天则不雨,而望之愚妇人,无乃已疏乎?’”女巫为阴,天旱当以女巫求雨。此用女巫之证。

女巫既隶属三界之外,儒释道的仁义道德、宗教戒律皆与之无关。所以无论中外,女巫的形象皆非主流,神秘、黑暗和性错乱。寓意敦伦之事的“巫山云雨”的“巫”就与之有关。宋玉《高唐赋》:“昔者先王尝游高唐,怠而昼寝,梦见一妇人,曰:妾为高唐之客,闻君游高唐,愿荐枕席。王因幸之。去而辞曰:妾在巫山之阳,高丘之阻,旦为朝云,暮为行雨,朝朝暮暮,阳台之下。”其实这事可能就是王做了一个春梦而已。王国维在《宋元戏曲史》论及楚国女巫:“至于浴兰沐芳,华衣若芙,缓节安歌,歌舞之盛也。乘风载云之词,生别新知之语,荒淫之意也。是则灵之为职,或偃蹇以像神,或婆娑以乐神...”。就是说楚国女巫貌美放荡,神秘不逮。

西方世界的女巫形象较之中国过犹不及,就看其招牌 --- --- 黑色的斗篷、胯骑扫把 --- --- 就可见一斑。

为什么女巫要骑一把扫把?这和像哈利波特里面女巫的神通毫无关系,与致幻剂和性有关。

<$details summary="汉斯·巴尔东·格里恩在1508年画的女巫图" class="notification">
[img[https://one.rizi.me/Photos/webphoto/汉斯·巴尔东·格里恩在1508年画的女巫图.JPG]]
</$details>

在欧洲中世纪及文艺复兴时期,大部分面包都是用黑麦做的。而黑麦和类黑麦植物容易滋生麦角菌,这种菌有致幻作用。简单摄入这些迷幻剂后会令人产生各种不适,包括恶心、呕吐、皮肤过敏等。后来人们发现,通过皮肤吸收不会出现以上的副作用,并且伴有欢快的致幻效果,而身体上最容易吸收的部位是腋窝处的汗腺,以及阴部的黏液膜。迈克尔·J.哈纳挑在《致幻植物在欧洲巫术中的角色》一文中有这样的论断:“他们在洗劫那位女士(女巫)家的壁橱时,发现了一烟斗的油,是抹杆子用的,一根与她同甘共苦的杆子,飞驰缓行全靠它。”还有1470年左右的这篇记载:“但是平民们认定,女巫们也承认:在特定的白天或夜晚,她们会在一根杆上涂油然后骑着它前往指定地点,或把油涂在自己的腋下和其他长毛的部位。”  也就是说,扫把是女巫们自慰的器具。

<$details summary="Luis Ricardo Falero :《Witches on the Sabbath》(1878)" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/d/d3/Witches_going_to_their_Sabbath_%281878%29%2C_by_Luis_Ricardo_Falero.jpg]]
</$details>

<$details summary="《安息日的开始》,艾伯特·约瑟夫·佩诺1910年创作" class="notification">
[img[https://one.rizi.me/Photos/webphoto/安息日的开始.jpg]]
</$details>

<$details summary="《The Dance of the Witches》 伊萨克·伊里奇·列维坦-1882" class="notification">
[img[https://one.rizi.me/Photos/webphoto/DpopLZkW4AAKNad.jpg]]
</$details>

西方神话故事中出没最多最有名的女巫,当属希腊神话中的瑟西(Circe) 、米蒂亚(Medea) 和卡珊德拉(Cassandra) 。

瑟西(Circe),最著名的女巫,具有强大的魔力,令人畏惧。她能透过药草的协助,诵念咒语与召唤神明来施法,冒犯她的人会变成动物,并创造出不存在的幻影,她可以藏住月亮与太阳让大地一片漆黑,也会下毒来杀害她的敌人。她名字已经是是女巫、女妖、巫婆等的代名词。

<$details summary="Evelyn De Morgan:《Cassandra》" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Cassandra1.jpeg/566px-Cassandra1.jpeg
]]
</$details>

<$details summary="Evelyn De Morgan:《Night and Sleep 》" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Night_and_Sleep_-_Evelyn_de_Morgan_%281878%29.jpg/1600px-Night_and_Sleep_-_Evelyn_de_Morgan_%281878%29.jpg
]]
</$details>

米蒂亚(Medea),由爱生恨的复仇女巫。她是科奇斯岛国的公主,也是女祭司,一生命运乖舛,她爱上了与她父亲作对的杰逊王子,这段姻缘最后以悲剧收场。米蒂亚是月亮女神的干女儿,所以她懂得使用许多的黑魔法,她会调制灵药、占卜、下毒。不但法术高强也非常聪明与残忍,她曾为了杰逊,亲手杀了她自己的弟弟。后因为杰逊移情别恋,与邻国的公主结婚,被情人抛弃的米蒂亚一怒之下,制作了一件沾满毒药的礼服,送给杰逊的未婚妻,将其杀害。甚至还亲手杀了自己为杰逊生下的两名稚子,最后架著由著龙所拉的车离开。

卡珊德拉(Cassandra),特洛伊的女预言家。因为她能预知未来,所以被归在女巫之列。据说卡珊卓拉的力量来源是因为有一天真理之神阿波罗看见了卡珊卓拉,便爱上了她,阿波罗赐予她预知未来的能力,卡珊卓拉却拒绝了阿波罗的示爱,恼羞成怒的阿波罗对她下了一个诅咒,让别人永远不相信她所说的话,因此注定她永远知道真相却无力阻止悲惨的事情发生。她是特洛伊的人,她预言若是将木马迎进城内,特洛伊城必遭毁灭,却无人相信,特洛伊就这样灭亡了。

<$details summary="Medea by Anthony Frederick Augustus Sandys " class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Medea-Sandys.jpg/500px-Medea-Sandys.jpg
]]
</$details>

不管是在西方还是东方,女巫似乎都处在天地交错的阴影里,为所谓的主流社会和价值观所不容。最著名的当属中世纪“欧洲女巫大审判”。1484年,两位教士亨利希和耶科布,撰写了《女巫之槌》,书中详细列举了很多种识别女巫的方法,这是一部猎杀女巫手册,由此引发了声势浩大的女巫大屠杀。

中世纪的女巫大审判有着非常黑暗的一面,绝大多数被处死的“女巫”都是无辜的女性。对于女性不公平的审判可以从《女巫之槌》记叙中得知:“如果被告过着不道德的生活,那么这当然证明她同魔鬼有来往;而如果她虔诚而举止端庄,那么她显然是在伪装,以便用自己的虔诚来转移人们对她魔鬼来往和晚上参加巫魔会的怀疑。如果她在审问时显得害怕,那么她显然是有罪的,良心使她露出马脚。如果她相信自己无罪,保持镇静,那么她无疑是有罪的:因为女巫们惯于恬不知耻地撒谎。如果她对向她提出的控告辩白,这证明她有罪;如果她由于对她提出的诬告极端可怕而恐惧绝望、垂头丧气,缄默不语,这已经是她有罪的直接证据。如果一个不幸的妇女在受刑使因痛苦不堪而骨碌碌地转眼睛,这意味着她正用眼睛来寻找她的魔鬼;而如果她眼神呆滞、木然不动,这意味着她看见了自己的魔鬼,并正看着他。如果她发现有力量挺得住酷刑,这意味着魔鬼使她支撑得住,因此必须更严厉地折磨她;如果她忍受不住,在刑罚下断了气,则意味着魔鬼让她死去,以示使她不招认,不泄露秘密。”

借由“猎杀女巫”之名,三个世纪内约有十万人被处死,其中绝大多数是女性,尤其集中在宗教改革时期的欧洲地区。

2018年04月27日周五下午06:26:49
希腊神话是一套庞大复杂的序列(希腊神话和罗马神话既既有相通的部分,也有差异,并不是一回事)。希腊人认为神话是他们的历史的重要组成部分,他们用神话故事来解释自然现象,文化变更以及传统的憎恨和友谊。神话其是希腊人对自己的领袖具有神话中的英雄或者神的血统的骄傲的根源(凯撒大帝自称埃涅阿斯后裔 <<ref "②">>,尊维纳斯为罗马人祖先)。基本上没有人会怀疑《伊利亚特》和《奥德赛》所描述的特洛伊战争后面的真实情况。这和中国历史上的神话故事不一样,中国神话人物体系有两部分组成,一部分是舶来的,印度佛教中的一系列人物,如如来、菩萨等;一部分是本土神话人物,主要是道教人物,如太白李金星等,还有一部分是神话故事中的人物,如齐天大神。中国神话对中国文化影响远远不如古希腊文化在当地人民心中的地位,只能算作民间实用性崇拜,求神拜佛,祈求平安,远没有上升到庙堂政治系统,尽管中国历代皇帝都以天子自居,号称天命神授,其实无非是蛊惑民心巩固自己权利和标榜政治地位的正统而已。

<$details summary="《维纳斯的诞生》作者:威廉·阿道夫·布格罗 | 1879年" class="notification">
[img[https://one.rizi.me/Photos/1200px-Sandro_Botticelli_-_La_nascita_di_Venere_-_Google_Art_Project_-_edited.jpg]]
</$details>  


//注:维纳斯的诞生,共有三幅作品,还有://  <<ref "①">>

<$details summary="亚历山大·卡巴内尔 | 1863年 | 藏于巴黎奥塞美术馆">
[img[https://one.rizi.me/Photos/1200px-1863_Alexandre_Cabanel_-_The_Birth_of_Venus.jpg]]
</$details> 

<$details summary="威廉·阿道夫·布格罗 | 1879年 | 藏于巴黎奥塞美术馆">
[img[https://one.rizi.me/Photos/637px-William-Adolphe_Bouguereau_(1825-1905)_-_The_Birth_of_Venus_(1879).jpg]]
</$details> 

今天的人物主角是维纳斯(Venus),古罗马神话中的爱神、美神,同时又是执掌生育与航海的女神,拉丁语的“金星”和“星期五”等词都来源于她。与之对应的古希腊神话中的爱神叫阿佛洛狄忒(Aphrodite),但她与维纳斯不同的是,阿佛洛狄忒不只是性爱女神,她也是司管人间一切情谊的女神。在希腊神话中,阿佛洛狄忒是奥林匹斯十二主神的一柱。

<$details summary="古希腊爱神阿芙洛狄蒂雕像,现藏于希腊雅典国家考古博物馆">
[img[http://p3.cdn.img9.top/ipfs/Qmdw4hpxixegM3GQ536tqfg4bJdXMSXWsLHGpJYTezTaPG?3.jpg]]
</$details> 

维纳斯(Venus)出生于大海之中。相传在世界之初,统管大地的该亚女神与统管天堂的乌拉诺斯结合生下了一批巨人。后来夫妻反目,该亚盛怒之下命小儿子克洛诺斯用镰刀割下其生殖器掉入大海。阳具生出泡沫,维纳斯就这样诞生了。希腊语中“维纳斯”的意思就是泡沫。

<$details summary="乔尔乔内 | 沉睡的维纳斯 | 1510">
[img[http://p4.cdn.img9.top/ipfs/QmRv888y4uUBEZxn26fwFcghxXGgHWzgMcDd88sgACk4uR?4.jpg]]
</$details> 

<$details summary="波提切利 | 维纳斯与马尔斯">
[img[http://p4.cdn.img9.top/ipfs/QmWV8VEicrpcE23oE94FqBXCDwD2ooLq6wLZScAki6RPj3?4.jpg]]
</$details> 

维纳斯(Venus)也有两位情人,一个是罗马神话中的重要的战神玛尔斯(拉丁语:Mars,玛尔斯的节日是在三月和十月,拉丁语的“火星”和英语的“March”正是源自玛尔斯),另外一位情人是希腊神话中有名的美男子阿多尼斯(Adonis)。阿多尼斯(Adonis)是一个每年死而复生,永远年轻的植物神,他与年历有深厚的联系,由于阿多尼斯(Adonis)长的俊美而永远年轻,是一个受妇女崇拜的神。维纳斯和阿多尼斯(Adonis)的相爱是由于她那俏皮的儿子丘比特惹的祸,有一天母子玩耍时丘比特的箭不小心划伤了维纳斯(Venus),在养伤时遇到了阿多尼斯(Adonis)而相爱。

<$details summary="波提切利 |《维纳斯与战神》|1483">
[img[http://p1.cdn.img9.top/ipfs/QmaqZ3UR92sM3uh6UrbfjgxQ64VeXPujwRE92zr2FWihdt?1.jpg]]
</$details> 

<$details summary="《维纳斯与阿多尼斯 Venus and Adonis》作者:Peter Paul Rubens | Museum Kunstpalast">
[img[http://p3.cdn.img9.top/ipfs/QmPYW74iGwXF4bhc5UCKp8KSKHdgm3skyrWQe1rhe4g9dw?3.png]]
</$details> 

丘比特的箭不止使他母亲陷入爱河,也曾自伤而遭遇爱情。传说有一个国王的女儿名叫普赛克(赛姬Psyche),长得十分美丽,人们认为她就是美神的化身,而忽略了丘比特的母亲维纳斯的神庙。维纳斯十分生气,便请了丘比特去对赛姬射下金箭,要让她爱上世界上最丑陋的男人。当丘比特飞到熟睡的赛姬床前时,见到赛姬的美丽,使得已经拉开的金箭不小心刺破自己的手指,从此丘比特便爱上了赛姬。爱情害人害己啊:)

<$details summary="《儿时的丘比特和赛琪》作者:威廉·阿道夫·布格罗 |1890">
[img[http://p3.cdn.img9.top/ipfs/Qmb3999cx6VSUR3L6KQZ3Kkt6i1gtUPyunxM97kiSvGEE8?3.jpg]]
</$details> 

<$details summary="《抵御爱神》作者:威廉·阿道夫·布格罗 |1880">
[img[http://p3.cdn.img9.top/ipfs/QmSSSLyyaCAEkKUErzFmhbmgAxvro8UsXqebMyhc82VutQ?3.jpg
]]
</$details> 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "威廉·阿道夫·布格罗(William Adolphe Bouguereau,1825年11月30日 - 1905年8月19日),是19世纪末的法国学院派画家。布格罗的绘画常用神话作为灵感,以19世纪的现实主义绘画技巧来诠释古典主义的题材,并且经常以女性的躯体作为描绘对象。布格罗在世时于法国和美国都享有高度的名声,并且在一生中获得众多的荣誉,同时他的作品在当时也都以超高价卖出。作为那个时代沙龙画家中的佼佼者,布格罗成为后来崛起的印象派等前卫艺术的首要攻击对象,并且在20世纪由于现代主义的崛起而被遗忘。到了1980年代,对于人物画和19世纪画风的兴趣重新崛起,布格罗的绘画才又开始被重视,并且被认为是学院派艺术最重要的画家之一。在他一生中,布格罗总共画了822幅当下已知的画,除此之外还有其他许多作品的下落不明。">>

<$details summary="《埃涅阿斯奔离燃烧的特洛伊城》,菲德里克·巴洛奇在1598所画,现存于罗马的博尔盖塞美术馆">
[img[http://p2.cdn.img9.top/ipfs/QmVznGXpch3HTy2oGbYtfi9ynZmSU6KsmGuSHWPRGnWupj?2.jpg
]]
</$details> 

<<footnotes "②" "埃涅阿斯,特洛伊英雄,宙斯7世孙,安基塞斯王子与爱神阿佛洛狄忒(相对于罗马神话中的爱神维纳斯)的儿子。维吉尔的《埃涅阿斯纪》描述了埃涅阿斯从特洛伊逃出,然后建立罗马城的故事。他在希腊与罗马神话及历史中扮演很重要的角色。">>


注:看高清大图请前往Google Arts & Culture,本文图片均来于此。

2018年05月06日周日下午12:00:13

<$list filter="[field:book_title[艺术的故事]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   


---
<$list filter="[field:book_title[艽野尘梦]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!!! 哈维尔:《哈维尔选集》

<<<
“意识形态的花言巧语,成了一座无穷的大山,当权者不断希望借此影响人们的思想,而由于这些花言巧语全无内容,公众通常不大察觉在其深处流露了一个明确而有意义的讯息,一项现实的忠告,‘如果可能的话,别碰政治……那你就平安大吉’”(41页)。
<<<

说的真好!意识形态就是当权者楔进人民脑中的病毒,一是为了秩序控制,二是为了歌功颂德。


<<<
“现代国家和现代政治权力的本源就在这里,即就在那一瞬,人类理性再次开始离弃人性,离弃个人经验,离弃个人良知和个人责任”。
<<<
哈维尔在《否定政治的政治》一文中,把它称为“权力匿名化和非个人化”,于是,它把自身化约为仅仅是统治技术和操纵技术(136页)。

葛兆光的评论:

<<<
其实,集权政治就是如此,不仅仅是现代中国,在传统中国也一样,比如明代初期的情况,就是把道德与政治权力合理化,把统治技术赋予道德化的意义,于是同一性再度确立。
<<<

葛老师虚晃一枪,皮里阳秋。三个代表、科学发展观、构建人类命运共同体等都是统治技术赋予道德化,只是走马灯似的换的太勤了,就失去了本身的意义了。

!!! 萨义德:《东方学》

近来的研究也开始从“真实历史与文化”的预设转向“建构的文本与话语”,于是,一切历史分析都仿佛文学叙述,而研究者又赋予这种“叙述”以话语的“真实性”。因为他们说,当这种话语或文本一旦拥有权力,它将取代“真实的存在”而成为“存在的真实”。

“一切历史分析都仿佛文学叙述”这种现象还好,学人明星化这种现象才是真正的堕落,贻害无穷。

2019年02月26日周二下午09:55:29
''Weekly40:''9.25~10.1

''本周读书:''

#《枕草子》 日﹒清少纳言(周作人译)
#《芳华》严歌苓 


''冯小刚的情怀底裤''

严歌苓的《芳华》因冯小刚的同名电影推迟上演而炙热。《芳华》是一部年代小说,讲述了七十年代一帮文艺女兵的芳华岁月,青春、成长、爱情和命运构建了整个故事。严和冯是同龄人,皆为58年出生,严歌苓出身书香门第,12岁时加入成都军区文工团,退伍后入籍美国,开始写作,畅销书作家;冯军队大院长大,高中毕业后参加北京军区文工团,后开始进入中国电影界,炙手可热。严冯芳华如出一撤。如果说能把严歌苓的《芳华》看作其年代回忆录,那么冯把《芳华》拍摄成电影,应该是冯追忆那如歌的青春。

同有军旅背景的严冯二人,如今都功成名就。不过在那个动荡的年代,不是所有人都如其有个灿烂的历程,参军也如同高考一样难,更别说作一位女兵。所以在二人的作品里暗透着一股那个时代的精英之气,情怀多于苦难,多与成长的忧伤和时代的迷茫。若干年前有一部叫《血色浪漫》的电视剧,也讲的是七八十年的故事,军队大院孩子的茬架、拍婆子、参军和下海,据说剧中的人物都来自现实原型--王朔、马未都、冯小刚等,电视剧中的冯裤子暗指的就是冯小刚,连长相都酷似。每一个人的青春都值得追忆,或甘或酸或苦,那就是青春的气息。但不是所有人的青春值得留恋,我想这类年代作品--军旅和部队大院既得利益者二代青春追忆作品---更多的是迷恋和不甘吧! //2017.9.29.20:00//

那个战争胜利进行清理战场和收割的年代,部队文工团无疑是一个军队的安乐窝和内部工艺夜总会,
2017.9.30.16:51


<<<
	晚上排练或班务会之前,我们有一小时的自由活动时间。短短一小时的自由,我们得紧张地消费。阴暗角落偷个吻,交换一两页情书,借一帮一一对红调调情,到心仪的但尚未挑明的恋人房里去泡一会儿,以互相帮助的名义揉揉据说扭伤的腰或腿……那一小时的自由真是甘甜啊,真是滋补啊,以至后来游逛了大半个世界拥有着广阔自由的我常为三十多年前的一小时自由垂涎。
<<<


<<<
我们是信仰平凡即伟大的一代人,平凡就是功劳,就是精英,好几十年我们平凡得美滋滋的。时代有它不可告人的用心,教导我们平凡了更平凡,似乎我们生来还不够平凡,似乎刘峰的一生没有被埋没在平凡中。同时埋没于平凡的还有一个能工巧匠刘峰,一个翻绝活儿跟斗的刘峰,一个情操人品高贵如圣徒的刘峰,一个旷世情种刘峰。本来刘峰平凡善良是无妨的,偏偏用他的平凡来大做文章,偏偏无视他可能的非凡之处,抬杠说他平凡就够了,就伟大了,足够被推举上大理石基座。在他生命的最后几天,他或许想到自己的一生,想到此生与林丁丁的错过,全因为他平凡,被塑成平凡的塑像,搁在冰冷的基座上。非得强调他的平凡,定性他的平凡,才能确保那份平凡的不变,平凡了,才好使唤;对我们来说,平凡的刘峰真是好使唤。于是误了他一生,尤其他一生的真爱。因为,偏偏天下女人在心底里,都是不信平凡的;尤其女人如林丁丁,千万年前该跟骏马一并儿,同属于最凶悍骁勇的酋长,怎么可能心服口服地爱上平凡?
<<<
//( {{!!modified}} )//

病来的突然,去的徘徊。Weekly26也就耽误了几天。

本周书目《苏东坡传》,作者民国才子林语堂。此书原本以英语书写,后被大翻译家张振玉先生翻译为中文(林语堂的《京华烟云》中文版也是出自张之手),也有人说宋碧云译本比张译本要好。

捡拾此书有几个原由。其一就是对苏东坡才情感兴趣,唐宋八大家苏家占三家,苏家三大才子当以苏轼为首。大江东去,浪淘尽、千古风流人物。但愿人长久,千里共婵娟。春宵一刻值千金,花有清香月有阴......千古绝句如珠落盘。林语堂本书也神话了苏轼,前言序里甚至能读出“跪舔”之象。其二是因为出自林语堂之手。虽然不能盲信大师,但是大师必有过人之处。本书也颇有争议,有说写的烂的,当然也说是因为翻译的原因。不过试想一下,把宋朝语境下的事情在现代用英语书写出来,本身也足以望其项背,更别说主人公是一个诗词作家。更让我吃惊的事情,林语堂何以霸占那么多苏轼史料,写出诸多细节。其三就是对宋史之耽爱,之前写过一些宋史方面的小文,但都是粗枝大叶,贻笑大方,所以需要宋史猛料强补。

本书线性的叙述了苏轼一生,但是对宏大历史背景和重大事件的展开叙述,如北宋新旧党争、乌台诗案等,以及北宋当时的外交关系,也是本书的一大特色。当然书中林语堂也不乏一些个人感悟和幽默:

<<<
“才华过人的诗人和一个平实精明的女人一起生活之时,往往是显得富有智慧的不是那个诗人丈夫,而是那个平实精明的妻子。”
<<<
还有一些诗的引用也颇有趣:

<<<
“两个娘子小身材,捏着腰儿脚便开;若要尝中滋味好,除非伸出舌头来。”(南宋女词人朱淑贞的《咏箸》诗)
<<<
<$list filter="[field:book_title[苏富比的早餐]] -[title[Manage Books]]+[sort[created]]">

<$list filter="[field:book_title[苏富比的早餐]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[苦行孤旅]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[茨威格文集]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[荣枯鉴]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[莎士比亚书店]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<span title="莫斯科绅士"><a href={{!!douban}}><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=40%></a>
</span>

<$list filter="[field:book_title[莫斯科绅士]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[蒋介石与现代中国的奋斗]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
[[雅记清词写流韵]]上有何鹏回忆王国维的一篇文章这样说道:

<<<
当时他研究的经史范围很大,凡甲骨文、经书的注疏、古代的典章文物、元代的史学和西北的地理等,皆无一不精。所作《殷周制度论》及《流沙坠简考释》诸书,义据精深,实近世经史学的名著。在这时期中,他冀求的是安定,他想压伏他的内心的冲突。然而在民国十五年中国又起了第二次革命,并且这次革命的光景与辛亥大不相同,辛亥不过是资产阶级之要求民主意义的革命,这次革命却是农工和小资产阶级的联合阵线,他们的主张是相同的,他们的口号是相同的,凡是社会上复杂的意识都要排除,尤其是一班所谓“遗老”者也,虽不敢反抗革命,至少是不赞成革命,更为他们所深恶的。''所以革命军一到长沙,叶德辉是被杀了,这个消息传到北京之后,他是震恐的不得了,以为祸难若至,或有更甚于甲子之变者。''便在十六年五月初三这一天,在北京颐和园自沉了。留下了这几句遗嘱:“五十之年,只欠一死,经此世变,义无再辱。”那种着重于制伏自己的倔强之态,依然跃于纸上。
载第31期(1937年6月卅出版)
<<<

这位何鹏认为王国维为恐惧革命而死,也就是前文 --- [[五十之年,只欠一死]]所述的“反共及痛恨北伐说”。
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[被涂污的鸟]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!古希腊罗马哲学

<<imageSlider [[https://cl.ly/pf0Z/%E5%8F%A4%E5%B8%8C%E8%85%8A%E7%BD%97%E9%A9%AC%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>


!法兰西启蒙思想和唯物主义

<<imageSlider [[https://cl.ly/peiP/%E6%B3%95%E5%85%B0%E8%A5%BF%E5%90%AF%E8%92%99%E6%80%9D%E6%83%B3%E5%92%8C%E5%94%AF%E7%89%A9%E4%B8%BB%E4%B9%89.jpg]]
"//点击展开//">>

!中世纪基督教哲学

<<imageSlider [[https://cl.ly/peNS/%E4%B8%AD%E4%B8%96%E7%BA%AA%E5%9F%BA%E7%9D%A3%E6%95%99%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>

!德意志古典哲学

<<imageSlider [[https://cl.ly/pe4U/%E5%BE%B7%E6%84%8F%E5%BF%97%E5%8F%A4%E5%85%B8%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>

!过渡时期

<<imageSlider [[https://cl.ly/pejb/%E8%BF%87%E6%B8%A1%E6%97%B6%E6%9C%9F.jpg]]
"//点击展开//">>

!近代早期西欧哲学

<<imageSlider [[https://cl.ly/pewo/%E8%BF%91%E4%BB%A3%E6%97%A9%E6%9C%9F%E8%A5%BF%E6%AC%A7%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>


!哲学全景图
<<imageSlider [[https://cl.ly/pe3W/1.jpg]]
"//点击展开//">>

<<imageSlider [[[https://cl.ly/pe8p/3.jpg]]
"//点击展开//">>

!中东哲学体系

<<imageSlider [[[https://cl.ly/peRu/2.jpg]]
"//点击展开//">>

//根据邓晓芒赵士林合著的《西方哲学史》整理//

部分来源于:https://superscholar.org/comp-history-philosophy/
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[念楼学短]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[见字如面]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
把[[GeneralMacros]]下的有关 “\define imageSlider(tiddlerName caption)"的样式简单修改即解决了`imageSlider`下图片过大的问题。

```
[img width=100% [$tiddlerName$]]
```
去掉`width=100%`即可。
<$list filter="[field:book_title[认识身体]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
斯蒂芬·茨威格 <<footnote "①" "参见:[[昨日的世界]]">>  的历史特写《[[人类的群星闪耀时]]》和《[[昨日的世界]]》还没有看完,我已贪婪地迫不及待地翻开了他的中短篇合集 ---《[[茨威格文集]]》。

茨威格的作品有一种魔性,特别是他的中短篇小说,每打开一篇就像掀开一位美丽女人裙子的一角,充满诱惑而不忍罢手。

<<<
茨威格发展了一种特别的写作方法,把谨慎的心理分析、引人入胜的叙述方式和极好的修辞风格融为一体。
<<<

我之前一直欣赏[[素心素地素文章|素心素地素文方是大文章]],而茨威格的风格与之截然相反。他的作品就像中世界哥特式建筑 <<footnote "②" “哥德式建筑,Gothic-architecture),是一种兴盛于欧洲中世纪高峰与末期的建筑风格。它是由罗马式建筑发展而来,为文艺复兴建筑所继承。哥德式建筑的整体风格为高耸削瘦,以卓越的建筑技艺表现了神秘、哀婉、崇高的强烈情感,对后世其他艺术均有重大影响。">>  --- 繁华、委婉和富裕的幻想,一个个精工细节蜿蜒跌宕。如果用音乐来形容的话,茨威格的作品就像一部交响曲,但绝不是土耳其进行曲那样的滂沱气势,茨威格的作品细腻有余;也不是一首圆舞曲,茨威格的作品里可以看到富有知识分子对底层人民的怜悯和人性的悲伤。所以,看茨威格的作品是有一定危险性的,他会让营造一个个让人眩晕的场景,让您流连忘返,并且您会怀疑自己的文学阅读和写作能力为什么会如此的卑劣,从而对茨威格心存嫉妒。甚至,冷静下来时候,您会认为这小子是在赤裸裸的炫技,让人鄙视和佩服他的耍聪明。这也是其作品一直颇受争议的主要原因。

评论家对于茨威格作品的意见有着极大的分歧,一些英语批评者对他的贫乏、疲弱和表面的文学内容感到失望,而另外一些评论家却赞赏他作品内的欧洲传统:歌颂人道、纯朴、和有力的风格。

不管有多大的争议,不过丝毫不会撼动其上世纪欧洲文坛三大中短篇小说家之一的地位(上世纪三位作家被公认为出类拔萃的中短篇小说家,他们是俄国的契诃夫、法国的莫里亚克和奥地利的茨威格)。

下面是几个段落摘抄:


<<<
他向她倾诉着炙热灼人的话语,用火烧火燎的色彩吐露出青春爱情的渴望,那是只有在最热烈的欲念支配下的瞬间才能说出的最炽烈的话语。在他的言词中,隐匿着一个年轻生命对幸福与享乐的无限向往,对爱情的最迷人的目标的全部狂热的追求。他滔滔不绝地诉说着,语流越来越奔放,欲望越来越强烈。他的话语犹如贪婪的火焰腾空而起,男人的天性在他身上升到了最高点。他像乞丐一样苦苦恳求着她的爱情……  

他的爱情往往只停留于暗自思慕,表现为小心翼翼地远处观赏,沉醉于诗句和梦境之中。

一顶圆顶宽边毡帽斜遮住他脸上柔和而规则的线条,赋予那颗普普通通、几乎可说极为平常的头颅一些诗人的风采和理想的成分。

悲伤几乎给她一种快感,她无意中发现,在悲哀中自我折磨有它独特的魅力。

//---《普拉特尔的春天》//
<<<


2018年05月04日周五上午01:04:29 
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[访古寻城]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
《[[如何阅读一本书]]》认为读书有四层次  (见[[此|如何阅读一本书?]]),最高一级是''主题阅读''。一般做学术和科研研究为业者多为主题阅读,即就一个主题从多本或多系列书籍展开阅读。今天看到还有一种类似读书法,准确地说是不读书做研究的方法, “数字人文” 法。

“数字人文”读书法,准确的说不是人读,是机器去读书,用计算机统计一本书某些词出现的次数,总结出此本书“高频词”榜,从而推断出本书的主题大意和风格。

这种读书法有效的应用了《[[阅读心理学]]》一书中提到的研究成果:阅读是基于“词”的阅读,眼动效应也是基于词的运动。年初Google提出的让“让Google更聪明,从书里找答案”,我想就是基于词切分和AI技术,Google学会了怎么读懂一本书。

事实上前年我已经开始利用词切分法,通过大量图书全文检索的模式用在写作上了。这种方法非常适合小众专业领域研究和写作。例如,之前我常在中国古代文学的故纸堆里扒拉寻找一些好玩的东西拿出来写,但是我又不可能熟读中国几千年所有文言文文本,那要找一个藏在几百几千年前书本里的小玩意怎么办?词切分+全文搜索,勾陈索引,把结果领出来,摘掉没用的,润色,注入观点,就是一篇相对专业的文章了。(全文检索软件我用的是~FileLocator,数据库我用的是“古典典籍TXT”“历代笔记TXT”,见此:[[Rizi-Box|https://one.rizi.me/Books/]])

几年前,纽约时报就用这种方法分析了 1789 年到 2009 年之间所有美国总统的就职演讲,让读者一目了然地看到在美国 200 多年的历史进程中,总统关心的核心问题是如何变化的。

<<imageSlider  [[http://f.cl.ly/items/3T0V1p3P2l0u3Z1y300H/1979.jpg]]    "美国总统约翰 · 亚当斯在 1797 年的就职演说">>

<<imageSlider  [[http://f.cl.ly/items/0Q0V1v0G320F2m3I391W/2009.jpg]]    "美国总统贝拉克 · 奥巴马在 2009 年的就职演说">>

当然这种方法最大的问题是,它过分简化了语词和语义之间的复杂关系。例如对“武汉市长江大桥”这句话不同词切分法,结果出来的意思完全不一样。在实际操作过程中,可以引入概率模型和迭代算法的复杂程序(主题模型法topic modeling),做出更高级的玩法。

我在BookStore里推荐的''中国哲学书电子化计划''这个网站,就是站长德龙(Donald Sturgeon)的研成果。德龙还在读博士的时候就凭一己之力做出了一个巨大的线上开放电子图书馆,虽然名字叫作 “中国哲学书电子化计划 “,但是事实上它收藏了超过三万部中文著作,从先秦到民国,凡所应有、无所不有,总共有五十亿字之多。

<<imageSlider  [[http://f.cl.ly/items/2N0U3Z242E2K3O2s0B3s/wenxianxiangsidu.jpg]]    "中国哲学书电子化计划--早期中国文献的相似度">>

2018年08月03日周五上午12:27:29
<$list filter="[field:book_title[诗经]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
这个详情插件 $:/plugins/telmiger/details 比[[之前用的折叠效果|文字折叠宏]]似乎更好看和好用,几种效果如下:

```
<$details>

! This is the revealed content
And this is some text

</$details>
```
<$details>

! This is the revealed content
And this is some text

</$details>

---

```

<$details summary="Open here!">

!! This is the revealed content
And this is some text

</$details>
```

<$details summary="Open here!">

!! This is the revealed content
And this is some text

</$details>

---


```
<$details summary="This should be open" open="yes">

!!! This is immediately visible
To have another details section inside a details widget it must be transcluded. Example:

{{!!widget-author}}

</$details>

```
<$details summary="This should be open" open="yes">

!!! This is immediately visible
To have another details section inside a details widget it must be transcluded. Example:

{{!!Coze}}

</$details>

[[高级用法|详情展示高级用法]]:

<$details summary="Open here!">

{{详情展示高级用法}}

</$details>
!!! Standard Details

```
<$details>
Find out more about this technology => go to [[DetailsWidget|https://tid.li/tw5/plugins.html#DetailsWidget]] 
</$details>
```

<$details>
Find out more about this technology => go to [[DetailsWidget|https://tid.li/tw5/plugins.html#DetailsWidget]] 
</$details>

!!! Details with Persistent State

```
<$details state="$:/state/myDetailsStateTiddler">
.....
</$details>
```

<$details state="$:/state/myDetailsStateTiddler">

* If the text reference contains a tiddler, the state is saved in the text field. 
** Check $:/state/myDetailsStateTiddler
* no summary defined
** Note: You can click on the whole detail area to close as we have to emulate the change event using a click event.

</$details>
<br>

```
<$details summary="Save state in a state index" state="$:/state/myDetailsStateTiddler_2##details-state">
```

<$details summary="Save state in a state index" state="$:/state/myDetailsStateTiddler_2##details-state">

* If the text reference contains an index, this works in any case. 
** Check $:/state/myDetailsStateTiddler_2
** Maybe you want to set it’s tiddler’s type manually. (Delete this tiddler and see what happens.)

</$details>

!!! Details with Style and Class

```
<$details field="caption" open="no" class="success" >
```

<$details field="caption" open="no" class="success" >

* Summary = field "caption" from this tiddler (Test new stuff)
* class="success" => summary with green background
* State is not saved.
** When you close and reopen this tiddler, it will allways be closed.

</$details>


```
<$details tiddler="myTempState" open="y" class="warning" state="myTempState">
```

<$details tiddler="myTempState" open="y" class="warning" state="myTempState">

* for the summary use the tiddler myTempState (field defaults to "title")
* class="warning" => summary with red background
* save state in the tiddler [[myTempState]] (field defaults to "text")

</$details>


```
<$details summary="Local summary wins" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">
```

<$details summary="Local summary wins" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">

* local summary wins over field "caption" of DetailsWidget
* class="notification" 
* save state in field myTempState!!last-open
** note: same state tiddler as above

</$details>

!!! About the Author 


```
<$details tiddler="Coze">
coze
{{Coze}}
</$details>
```

<$details tiddler="Coze">
coze
{{Coze}}
</$details>
<$list filter="[field:book_title[说文解字]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="caption"/>- <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
[[说了“且”|说文解字:生殖器崇拜也“且”]],再说说“也”。

之说以说“也”,“也”也是生殖器,是女性生殖器。

[img[https://cl.ly/ofEm/Snipaste_2018-01-01_15-48-15.png]]
《说文》:“女阴也。象形。羊者切。”段玉裁著《说文解字注》:““女阴是本义,假借为语词,本无可疑者,而浅人妄疑之。许氏在当时必有所受之,不容人少见多怪之心测之也。”现代汉语词典中以及找不到了此意。

现代有学者进一步考证,“它”与“也”本为一个字,也是女阴,如浙江省温州籍学者何新即持此观点。而“也”与“它”为什么成为两个字,与“匜”字有关。“也”通“匜”,匜,读yí,古代女子用的带漏斗的盥洗器具,“匜”很可能就是古人受女性性器官的启发,造出来的字。如果大家仔细联想一下,便可体味出其中的秘密。

更有意思的是,在方述鑫、林小安等编著的《甲骨金文字典》中说,“也”做语气词同“啊”,是因为考虑到“也”系女人之物,同“啊”用,包含了对美女或少妇的赞美、感叹成份。

“也”除了和“它”、“匜”通假外,还和“蛇”有相同的意思,都代表女阴。

此外还有“马”字,也具有女性生殖器之意。长沙马王堆汉墓出土的《马王堆房中书》一书有这样的记载:“治巾,取杨思一升、赤蚁一升、斑廿,以美□半斗并渍之,掩□□□□其汁,以渍细布一尺。已渍,旸之,干,复渍。汁尽,即取榖、椅桐汁□□□□□涂所渍布,干之,即善藏之。节(即)用之,操以揗玉策,马因惊矣。杨思者,□□□□□状如小□□而螫人。”这里的“马因惊矣”,意思就是女子用了被药浸过的纸巾擦拭私处后,私处就会像马惊了一样幸福起来。

无独有偶。男子遗精,现在依然叫做“跑马”或者“走马”,可能后来“马”指代女阴的意义有了扩展,也可指代男性了。我想成语“心猿意马”的“马”也可能和这有关。

如此。“空空如也”的词意也就更意味深长了:)

//2018年01月01日 下午 03:41:52//
[[说了“且”|说文解字:生殖器崇拜也“且”]],[[也说了“也”|说文解字:生殖器崇拜“也”且]]。那么和也一样表示女性生殖器的“bi”,为何念做“bi”?

这不得不还得从“也”说起。《说文》曰:“女阴也。象形。<img src="http://ww1.sinaimg.cn/large/a085a8d8gy1fn6r77ydukj200r00n0dq.jpg"/>,秦刻石也字,羊者切。”那与“也”字形似的“必”字二者有何联系那?《春在堂笔记》引《铜熨斗斋笔记》曰:“今人读为必平声,殆篆文“也”字,与“必”相近而误,云云。”也就是说,后世把二字弄混了,音异而意同。那么怎么就成了生殖器的意思了那?

这要说一下“毴”字。毴,读bī。“非”下加横,是韭菜的韭字,形容韭菜一簇。非下加毛,自然形容毛多。毴,古同“屄”。由此,还引出一段笑话。明代一文人徐琲向领导投名刺(名帖)的时候,好事者在其名多填了一笔,“琲”遂成为“毴”,领导感觉十分不雅。

<<<
明代有徐琲者,人于其刺多添一笔,上官谓其不雅。(《思无邪小记》姚灵犀)
<<<

谁乐意被喊作“徐屄”啊。

由是观之,从“也”到“必”再到“毴”和“屄”,遂成今日之“傻bi”之“bi”。

//2018年01月06日 上午 11:54:59//
[[上次|2017年12月28日 上午 10:56:27]]说到“自”。有是想到之前博客上提到过的“且”。

“且”的意思无可厚非,而其字源之说破有争议,归结有三:

"""
1. “俎”器(切肉的案板)的象形;
2. 神主(祖先牌位)的象形;
3. 男性生殖器的象形。

[img[https://cl.ly/ofKI/Snipaste_2018-01-05_23-36-30.png]]
“且”,说文:“薦也。从几,足有二橫,‘一’其下地也。”这是大部分采取的解释。大部分人认为的也并非真理。其中生殖器说的代表者为郭沫若。

郭认为,且、土、士均为牡器之象形。《说文》:”士,事也。”东方人以物插地中为事,此突出了阳物的插入功能。除此,还有“祖”和“宜”。《礼记》:“曾子曰,夫祖者,且也”,“且”与“祖”相通,祖是人对男根的祈祷和崇拜,与祖相关的“俎”(祭器)、“宜”(祭名)、“祝”、“宗”也与男根相关。

[img[https://cl.ly/ofJ7/Snipaste_2018-01-05_23-42-39.png]]
示,《说文》:天垂象。郭沫若认为是男根倒垂的符号。

[img[https://cl.ly/ofF5/Snipaste_2018-01-05_23-35-41.png]]
祝,为一人向男根跪拜欺负的样子。

[img[https://cl.ly/of4W/Snipaste_2018-01-05_23-37-17.png]]
宗,甲骨文表示立神主(祖宗)以祭祀的房子,后引申未供奉同一祖先的宗族。
除此之外,具有生殖器崇拜意义的字还有:吉、王。

[img[https://cl.ly/ofFU/Snipaste_2018-01-05_23-38-18.png]]
吉 : 上士下口 。 一种说法是 :士为阳物 , 口为睾丸的象形白描 。男人因阳物获得快 感 , 所以后来《 说文 》把吉解释为善的意思 “另一种说法:口是容器,士是男根形状的 玉器 。表示容器里盛着男根形状的玉器举行祈福的祭典 。第三种解释是:口为女阴,士 为男根,吉是男女交媾的意思 。后引申为吉样、吉庆 。《蜃楼志全传》的主人公名叫苏吉士。吉士二字取自《诗经》的“有女怀春,吉士诱之 ” 。 吉与士都有男根的意思。《诗经》郑风里有“唯士与女,伊其相谑,”的说法 。郭沫若说,“士女对言,实同牡牝、祖妣”

[img[https://cl.ly/ofJ7/Snipaste_2018-01-05_23-42-39.png]]
王,郭沫若认为王与士形体相似,均代表男根。王字上面一横表示对男根的特殊指示。
除了郭沫若的观点外,李敖也是“且”字阳具论的拥趸者。1984年,李敖在《且且且且且》一文中,从中国古人的性崇拜,考证到儒家文化中的“牌位,指出且代表男根的来龙去脉。李更是把《诗经·褰(qiān)裳》“子不我思,岂无他士?狂童之狂也且!”译为:你有什么了不起,你不想本姑娘,本姑娘不愁没别人想,你神气什么,你小子,鸡巴啦!“古代女子够彪悍的!

学者对字源的考据提出不同观点都无可厚非,也不会轻易有标准答案,除了不断有新的考古发现进行佐证。而最让人厌恶的是一些“庸俗文字学”喜欢“泛性论”以哗众取宠。

Ps. 如果“且”为阳具,那么“姐”字何解?
"""
//2017年12月29日 下午 01:32:56//
<$list filter="[field:book_title[说部之乱]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
许多人谈起读书,都有看得不如忘的快之困惑。我也有,而且忘性特别大,看书犹如雨过地皮湿。这可能和自己没有达到“断诸邪见,缘起性空”的境界(南怀瑾说,人一旦达到性空的境界就会过目不忘,见[[维摩诘]]),这指的是心神专注,专一即为空。抛开这种玄理,不如看一则小故事:

```
一位老者常使小孙坐下来和自己一起读书,而小孩确常看常忘,索性不看,甚至有点不耐烦。于是就问爷爷看了又忘这读书有何用。爷爷就让小孩放下书,指着脚下的竹篮让他领着去门口小河打水。小孩蹦蹦跳跳地跑去了,当回时,竹篮空空如也,一脸迷茫。爷爷说,这次你跑快点试试。就这样反复两三次,小孩子还是没有打回来水。老人说,不要气馁,水虽然没有打回来,你看一下竹篮有何变化,是不是竹篮比之前更干净,更好看了!
```

看书时暂时没有记住,但是长久常看能净化我们的心灵。这和[[我书架上的神明]]上一位作者所言异曲同工:

<<<
读书最忌讳的,就是于心灵积下厚厚的灰尘。所以有说,人生识字糊涂始。知识即力量,只是道出了知识这枚硬币的一个面。知识之币的另一面,是心灵的尘垢。[[见此|开启那遥远时代的漂流瓶2]]
<<<

其实自古读书之人皆有忘书的烦恼,毕竟过目不忘的天赋可遇而不可求。司马光在《资治通鑑》进书表中谦称自己记忆“旋踵遗忘”。相似的话朱子也说过''“读书遗忘此士友之通患,无可救医,只有少读深思其意味,潜治当自有攻亦。“''(截详见❲明❳丘濬 编《朱子学的》卷之上,刊载于同治七年 (1868)《正谊堂全书》)不过朱子的解决办法在时下并不可取,少读多思,不如多读常思,互联网的发达,有些资讯并不需要记忆,只要了解即可,遇之,搜之,取之,即可。

<<imageSlider  [[https://cl.ly/qKXI/zhuzireading.png]]    "《正谊堂全书》截图">>

李慈铭《越缦堂日记》曾记一法或可医此患,书云:

<<<
”我辈素性善忘,随手所过,都不复记。偶有说得,即当笔之于书,不必计前人已及否也。“
<<<
<<imageSlider  [[https://cl.ly/qLNf/yuemangtang.jpgI]]    "《越缦堂日记》截图">>

这就是老话“好记性不如烂笔头”要旨。不过,这还不够,以自己多年实验结果来看,读书要有读书之法(见[[如何阅读一本书?]] 和 [[Laws of reading]]),笔记要有笔记之法。笔记之法,贵在用自己的语言简明扼要的对所读之书总结和点评。总结,即回顾和复习过程;点评,即思考和知识延展过程。此法,我也用在小孩的学习上,久之成习,收益良多。

记得一位哈佛高材生总结其学习之道,也提及了之法,见《
哈佛學霸的學習之道》(需科学上网):

<iframe width="560" height="315" src="https://www.youtube.com/embed/RYPHRat0oXA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

2018年03月21日周三下午22:02:48
最近感觉读书有点力不从心了,很多书间隔几天已经很难续读了,究其原因,有二:一,年龄增大,记忆力衰减(也有可能是身体气质阶段性导致);二,同时读的书太多。其一,已无力补天,自然规律;其二,忌贪为专。

之前读书,随意为之,六七本书同读同进,甚至更多,无甚规划<<tag 正读>>。今之后,同读同进之书不能超过4本,而且此4本要难易结合、晦涩和趣味结合、进取型和基础型结合。例如,这个月的书目结构可以调整为:[[蒋介石与现代中国的奋斗]](庞杂的证据和人物)+ [[维摩诘的花雨满天]](维摩诘经讲解)+[[闲情偶寄]](李渔的趣味和雅致)+[[文言津逮]](文言文讲读)。事实上,还有一本书-- --[[说文解字]]精读(原典之书) -- -- 想扔进去,因为这本书前后已经读一年了,尚未终结,此书看起来还得推延。//2017年12月12日 上午 06:49:08//

今天看到毛姆提倡的读书法也与我相似:

<<<
按着编年次序看我下文介绍的书,当然比较方便,但如果你已下定决心去读,我看不出有什么理由非按这次序不可。最好,你还是随自己的兴趣来读;我也不劝你一定要读完一本再换另一本。就我自己而言,我发觉同时读五、六本书反而更合理。因为,我们无法每一天都保有不变的心情,而且,即使在一天之内也不见得会对一本书具有同样的热情。在这种情况下,我们不能不为自己打算。至于我,当然选取最适合我自己的计划。清晨,在开始工作之前,我总要读一会儿书,书的内容不是科学就是哲学,因为这类书需要清新而且注意力集中的头脑,这样我的一天开始了。当一天的工作完毕,心情轻松,又不想再从事激烈的心智活动时,我就读历史、散文、评论与传记;晚间我看小说。此外,我手边总有一本诗集,预备在有读诗的心情时读之,在床头,我放一本可以随时取看,也能在任何段落停止,心情一点不受影响的书,可惜的是,这种书实在不多。 ——《书与你》
<<<
2017年12月26日下午10:22:07
<span title="读书指南"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[读书指南]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
“老眼阅人真烂熟,壮心得酒旋消磨。”(陆游 《醉中浩歌罢戏书》)虽然没有老陆阅人烂熟,喝酒闲消磨的境界,但读完《书架上的神明》我也算是阅人多亦,感概和收获颇多。我的阅人指阅人家之阅读故事。书中所列这上百位知识分子,虽然不是每个人都著作等身,但基本上也可称为当代中国知识分子中的翘楚,是真正的知识分子,而非像当下的人多为知道分子。读书的作用之一是解惑,我就是带着疑问读这本书的, 我的疑问是:怎么读书最好?有哪些好书可读?虽然这本书预设的问题是:哪本书对您影响最大?为什么?但历尽这百人读书史,虽然没有从根本上解决我的这些问题,但也有给了我一些启发,继而又产生了一些新的问题。

在回答预设问题一 ——哪本书对您影响最大——时候,大部分人都回答的相当困难,能直接了当回答的并不多。我也尝试回答这个问题,我也同大部分人一样,难以精准的说出一些书的书名。多人引用了鲁迅对同样问题的答案:”我没有想过,所以我不能回答您的问题。“ 而从每个故事中给出的结果来看,影响最大的书往往都是有预设场景的,是在一定的背景和环境下起到的发酵作用,这可能和这批知识分子的成长环境有关,大部分是文革前后不长时间成长起来的。在那个无书可读的年代,可得之书尤显得珍贵,如果所读之书恰又为一本好书——具有启蒙作用,书的价值就会被无限的放大。如果是在当下环境——信息泛滥,获取书籍的成本几乎可以忽略不计,他们会怎么读书?从大部分人的字里行间也可窥见一斑,他们基本上不读时下流行书。更甚者,如张五常,三十年不读书了。我佩服他们的自信。
这百人知识分子研究领域大多集中在文史哲经,而就每个人的答案中被提及到的书来看,是有一定的共性的,甚至可以这么说,这拨人是站在这些书的肩旁上站立起来的。我把它归纳了一下,有时间一定要啃一啃。

见:[[我的秘密书架]]

除这些专业书籍之外,几乎每个人都对历史钟爱,对历史书籍的阅读更放在一辈子的事情,常读而常新。我说的这些历史书,广义的也包含一些诸子百家典籍。现归纳如下:

见:[[我的秘密书架]]

虽然大部分人都很谦虚和诚恳的承认自己读书很杂,很乱,而从结果来看,可以这么评价,大部分这拨人读书广博,但是某一领域是专深的,读书的广度又影响其研究的高度。虽然这些人都是专业读书人,而自己属于江湖人士,而从读书的角度来看,也应该广而有专,不然最后也会成为为读书而读书的杂家。这就需要计划,读书应该计划的!

//2018年02月28日周三下午04:34:38//
''邮件列表:''[[读书·新知 |https://groups.google.com/d/forum/platoer]]

旨在读书讨论、分享和推荐。

''加入方法:''点击上面链接加入;或直接发邮件到这个地址,邮件主题注明“申请加入”即可。

```
邮件列表地址:platoer@googlegroups.com 
```
读历史,读的是什么?

很多人喜欢历史,有些人读的是故事或者说是事件,有的人想读的是历史真相。这些除了娱乐作业之外,没有什么营养的。

2017年12月08日下午04:10:29

历史到底有真相没有?凡事都有真相,可是历史是没有绝对真相的。在[[思维框架研究|Thought Framework Management]]中我说,"思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。"这句话同样适应用历史阅读,或者说历史研究。历史的真相不能还原,也无所谓真相的还原。我们读历史、研究历史,只能说趋于接近真相。而中国的历史研究着重考古,此考古非实物考古,准确的说算是考据,研究一下历史文本,谁曾经说过此话,提到过此人之类。而西方历史研究是唯物论,考古证据,由此为证,方为真相。再加上中国正史皆为官修,官修历史就难免要有意识流的注入和干预,很难客观的记录历史。所以,历史无真相,没有绝对的真相。

历史无真相,那么读历史读什么?只能是读故事了。读故事是没有什么营养的,就像听相声,只能一笑了之。从纵向来看,历史就是一个时间轴,每一个朝代、事件和人物都是时间轴上或长或大的一点,无数个大大小小的点组成了一部人类历史。从统计学来说,样本多了,自然就有相似性存在,就有某种规律,群体样本规律,动态发展规律以及逻辑规律。这种点线面之间的逻辑关系和规律才是历史的奥秘所在,读历史的乐趣所在。

2017年12月08日下午04:54:45
读文言文有什么用?

有时候我也问自己,有什么用?

经过这几年读下来,些许体会:

1. 技巧方面:对写作是有帮助的。无论是遣词造句还是行文表达,更加自如了。古代文和言分离,书写文和口头语是两套系统,文人书面表达之言比口述之言更加庄主和优雅,真正做到了文以载言。加之古代有字无词,所以文言的行文更加简洁,如果把古之流行的骈体以及词牌曲牌等韵体统一来看,行文读起来节奏有致,铿锵有声。当然,弊端也是有的,就是今天看起来某些文体晦涩难懂。所以,有志于码字书写的人,文言这一关是万丈高楼之基础。近代那些名不见经传的大家,莫不国学基础深厚。

2. 意识流方面:世界几大文化主体,唯有中华文化源远流长,绵延无断。这就是文字的力量,文以载道,道即文化之魂。所以,读文言可知现在的之所以为现在,又何为现在,未来又何去何从。这也是读史的作用,知兴亡,知更替。

但读文言,不盲从文言。任何思想和事件都是有历史场景的,割裂历史场景,以今之思想假以古人之身,要不对古人嗤之以鼻,要不会盲目崇信。人类发展至今,智力的进步是非常慢的,慢到可以用放大镜来看,我们今天进步的只是术而已,而对道,真正的变革又有多少那?看看三大宗教在当世流行不悖,乃是百年之前人类的思想成果。所以,读文言,不要以为古人之愚昧,这是妄,还原历史场景来看就可以了。
2017年11月25日 上午 02:47:04
<$list filter="[field:book_title[资治通鉴]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[越读者]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
!!! 鲍绍霖:《文明的憧憬》
近代中国知识人始终处在矛盾之中:

# 国家意识。一方面在观念上接受了西方现代以“民族”为“国家”基础的论述,觉得建设现代型的民族国家就是像西方一样追寻“文明”,一方面又在感情上倾向于中国历史上以“文化”为“国家”基础的现实,觉得捍卫清代以来光被四表的文化大国是保卫中国的“文化”。
# 现代途径。一方面把西方现代国家的法律、民主、科学看成是导致“富强”的必然的和理想的途径,觉得中国也应该从此走向未来,一方面又把西方列强看成是弱肉强食的野蛮行径,是导致中国积贫积弱的原因,觉得中国应当另辟蹊径走出一个新路。
# 文化定位。一方面中国倾向于把自己作为东方文化之大成,与西方相提并论,故中西或东西的说法成为习惯,一方面它又必须证明自己的文化是东方的代表,与日本(东方之西方)相竞争——这是一些相当复杂的冲突,而这些冲突都来源于中国人相信自己是一个历史与文化传统光辉而悠久,又没有经历过殖民历史从而丧失文化主体性的大国。因此,至今学者总是需要在历史论述和理论表达上,调和这两者。

!!! 许倬云:《我者与他者:中国历史上的内外分际》


<<<
“中国自诩为文明中心,遂建构了中国与四邻的朝贡制与内部边区的赐封、羁縻、土司诸种制度。正因为中国中心论,几千年来,中国不能适应与列国平等相处。直到近代,中国人似乎还难以摆脱这层‘心障’,一个原本是胸臆开放的普世主义,却又成为自设的局限”(21页)。
<<<

许先生所谓“我者”与“他者”的历史,就是这样一部不断融合、混杂和整饬的中国文化史。

2019年03月17日周日下午02:00:34
<$list filter="[field:book_title[这个字原来是这个意思]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
如果说五四新文化运动代表的是历史潮流和方向,那么与之相对的是旧学和旧势力。陈独秀和胡适为代表的改革派,是想借白话文做钟馗,打封建思想余孽这个恶鬼;想借新文化运动做利剑,讨伐旧势力那个稻草人。不过新和旧是不能完全割裂的,新是从旧所脱胎换骨,易容革命,完全隔离就变得激进而无益。君可见,当下社会信仰之缺失,道德之沦丧,风气之败坏,均可在历史中找到罪魁和祸首。

[[民国清流:那些远去的大师们]]里面所谓的旧势力、老朽或旧文人,如章太炎、辜鸿铭等,同样具有可爱、可敬的一面,不仅学富五车,而且思想道德之高远影响深远。

就说这位奇人辜鸿铭吧。


<<imageSlider  [[http://p3.cdn.img9.top/ipfs/QmTaeXKhL3kkGtxyQYg5BG58XvvDDnePFjb7fpKxAXYP81?3.jpg]]    "辜鸿铭">>


<<<
中国文人多有放诞传统,放诞即是真性情流露,更是对抗专制制度的一种无奈姿态。就群体而论,晚清和民国时期的文人最为放诞,最为淋漓尽致,表现了有操守文人的崇高人性,章太炎将袁世凯授的勋章做扇坠,辜鸿铭拖长辫教训毛姆,金岳霖与鸡共舞,钱玄同“人到四十就该死”……一个个鲜活的灵魂,跃然青史。
<<<


辜鸿铭是位“三洋”之人,生在南洋、学在西洋、就职北洋。辜精通多国语言,林语堂有这样评价“英文文字超越出众,二百年来,未见其右。造词、用字,皆属上乘。总而言之,有辜先生之超越思想,始有其异人之文采。鸿铭亦可谓出类拔萃,人中铮铮之怪杰。”在北大就其西文造诣无人可望其项背,但其中文可就马马虎虎了。一次他在北大课堂上讲《晏子春秋》,不小心把“晏”误写成“宴”字。学生向他指出,他边改边发牢骚说:“汉字之晏与宴,不过是日字上下调换一下而已,却字义大不相同,英文就少了如此麻烦。”学生不服,站起说英语也有将“god”(上帝)倒过来写成“dog”(狗)的。老先生竟只有耸肩无语的份儿。

辜鸿铭不仅把中国古典典籍,如《论语》等翻译到西方国家,也经常自愿担当起中国文化推广大使的角色。他到东交民巷外国使馆区的六国饭店用英文讲演《春秋大义》,开演讲售票先河。令世人瞠目的是,票价竟比听梅兰芳的戏还贵。听梅兰芳的戏,是一元二角大洋,听辜鸿铭讲演却要两块大洋。外国人趋之若鹜,一票难求。

别看辜鸿铭学通中西,但其思想是个"老古板",是个典型的保皇派,在北大被称为“辜鸿疯子”。他总是梳着大辫子,带着书童走进教室,上课时还让仆人给他点烟倒茶。学生们见此无不片哄堂大笑,辜平静确平静地说:“你们因我有辫子而笑我,我的辫子是有形的,可以轻易剪掉,然而诸位长在脑袋里面无形的辫子,就不那么好剪了。”闻听此言,狂傲的北大学生一片静默。

辜鸿铭不仅持才傲物,也是一位真性情中人。胡适刚到北大上台讲演时,不时用英语。当胡适在掌声中走下讲台时,正襟危坐在台下的辜鸿铭竟当着众人,对胡适说:“胡先生留学七年,可刚才的英语说得实在不地道。记住,在英国那是下等人的发音!”对胡适写的新诗,辜鸿铭也冷嘲热讽:“你那首‘黄蝴蝶’写得实在好,以后就尊称你为‘黄蝴蝶’了。”辜鸿铭一次对胡适说:“按白话文,你不该叫胡适之,该叫‘往哪里走’。还有,今天我当着你的面,为文言文说一句好话,如果家里来电报,说你父亲死了,叫你赶快回家奔丧,白话文多啰唆呀,如换成文言文,只需四个字,‘父亡速归’……”谦谦君子的胡适,也只能对之一笑而过。

辜还喜欢中国姑娘缠足,酷嗜嗅女人小脚,讲究瘦、小、尖、弯、香、软、正七字诀。对于清代文化如缠足、长袍、马褂、辫子、纳妾,辜鸿铭坚持终身。辜鸿铭娶了淑姑不到一年,又纳日本大阪心斋桥人吉田贞子为妾。辜鸿铭最出名的比喻是认为一夫多妻是一把茶壶配几只茶杯。当时诗人徐志摩结婚时,他的妻子陆小曼曾对他说:“志摩!你不能拿辜先生茶壶的譬喻来作借口,你要知道,你不是我的茶壶,乃是我的牙刷,茶壶可以公开用,牙刷是不能公开用的!”

尽管辜鸿铭有各种行为“不合时宜”,但辜是个有一定底线的人。慈禧太后过生日时,他当众脱口而出的“贺诗”是“天子万年,百姓花钱。万寿无疆,百姓遭殃”。而在北京大学校长蔡元培被免职时,他也愤而辞职,曾说:“现在中国只有两个好人,一个是蔡元培先生,一个是我。因为蔡先生点了翰林之后不肯做官,就跑去革命,到现在还是革命。我呢?自从跟张文襄做了前清的官以后,到现在还是保皇。”但他反对袁世凯的洪宪称帝。

毛姆的书如今在中国大热,盘踞各大书籍排行榜。而毛姆造访中国时候,却被辜鸿铭教训了一番。

毛姆读过另一大文豪托尔斯泰于1906年写给辜鸿铭的长信,后又读过辜鸿铭写的《中国人的精神》。毛姆对辜鸿铭和神秘的东方哲学充满了向往之情,所以便有了1921年的中国之行。到京后,毛姆就写了名帖派人送过去请他过来。可辜鸿铭根本不吃他这一套:


<<<
待毛姆明白过来,立刻写了一封十分客气的信,表示将到府上亲自拜访。待毛姆领教了对辜鸿铭轻慢的代价后,得到允诺才乘着轿子在胡同间穿行了一阵子,停在一座有些破败却十分古雅的门楼前。在仆人引导下,走过萧索的庭院,跨入一排堆满线装书的房间。落座后,仆人奉上一听纸烟和一杯香茶。在他打量墙上的字画时,辜鸿铭穿着马褂踱了进来。

二人握手后,重又坐下。辜鸿铭先开口了,那一口流利地道的英语让毛姆吃了一惊,听了他的话更吃了一惊。辜鸿铭说:“先生想来见我,真是荣幸之至。因为贵国人只同苦力和买办打交道,他们大概以为所有的中国人不是苦力就是买办。” <<ref "[1]">>

在毛姆不知所措之时,辜鸿铭又说:“所以你们以为只需招招手,我们就得过来。”

毛姆只得不断向面前这位高大瘦身、戴着小帽、后面拖着灰白小辫,早已在欧洲扬名立万的中国学者道歉,窘迫得无地自容。

交谈时,他们谈到了文化和哲学。毛姆认为西方哲学家影响了全世界,欧洲创造了辉煌的文化,至今还在指导着世界。

辜鸿铭不赞成毛姆的说法,说西方的休谟和柏克莱,他们无法与我们的孔子相提并论。当西方穴居毛饮的时候,我们已是进化的人类了。

毛姆表示不赞同辜鸿铭的见解,问:“那么为什么你们黄种人遭到白种人的轻蔑呢?”

辜鸿铭来气了:“因为你们白种人发明了大炮和机关枪!”

后来,他们又谈到了刚刚来华的杜威的实用主义。辜鸿铭说:“杜威的实用主义,那是那些想要相信不可信的东西者的最后避难所。”

毛姆听了眼前这位雄辩家对西方哲学和现代个人主义的批评后,将话题转到中国新文化运动、罗素、苏俄共产主义方面来。这是他此次来访要探讨的实质性问题。辜鸿铭的谈兴正浓,他说:“新文化运动,就是那些新从外国大学回来的,用那亵渎的手,把世界上最古老的文化破坏无遗的运动。而罗素就是用世界上最庄严的词句把青年教唆成流氓的家伙。至于共产主义么,我还没研究过。记得马克思说过它是个幽灵,让整个世界都不得安宁的幽灵罢了。”

毛姆把眼睛睁得大大的,连连说:“精辟,实在精辟!”

见毛姆对他的辫子很感兴趣,辜鸿铭说,这是一个标记,证明我是一个时代的代表。

在二人告别时,毛姆向辜鸿铭索字,辜鸿铭找了一张写满汉字的纸笺,送给他。毛姆归国后,请汉学家译出后,真叫他哭笑不得,竟然是一首写给青楼女子的情书:你不爱我时,声音甜甜,眼波含笑,素手纤纤。待你爱上我,声音变得凄楚了,满眼是泪,睹手痛惜。伤心哪,伤心之爱使你不爱……

<<<

辜鸿铭被称为清末第一有趣之人,有趣之人自然非议也颇多。对辜的评价也有颇多种声音:

温源宁:“一个鼓吹君主主义的造反派,一个以孔教为人生哲学的浪漫派,一个夸耀自己的奴隶标识(辫子)的独裁者;就是这种自相矛盾,使辜鸿铭成了现代中国最有趣的人物之一。”

胡适在《每周评论》上对辜鸿铭的评价:现在的人看见辜鸿铭拖着辫子,谈着“尊王大义”,一定以为他是向来顽固的。却不知当初辜鸿铭是最先剪辫子的人;当他壮年时,衙门里拜万寿,他坐着不动。后来人家谈革命了,他才把辫子留起来。辛亥革命时,他的辫子还没有养全,他戴着假发结的辫子,坐着马车乱跑,很出风头。这种心理很可研究。当初他是“立异以为高”,如今竟是“久假而不归”了。

作者在《[[民国清流:那些远去的大师们]]》一书中这样总结的:

<<<
辜鸿铭在那个时代是一道文化风景,他活着是个传奇,他去天国后留下太多关于中国文人的神话。他是个充满矛盾又极为和谐的学者,他变态地猥亵女性,他又淋漓痛快地大骂政客,他到西方留学却一针见血地批判西方文明的种种弊端。而最可贵的是他的骂是出于义理和公心。如果编一部《辜鸿铭之骂》或更能看清一位文人的风骨。

当今社会,已再无辜鸿铭。不少学者也时髦地骂骂社会,骂骂人,但他们早已无辜鸿铭的独立人格,忧贫的多,忧道的少。

张中行说:


我想,如果说这位怪人还有些贡献,他的最大贡献就在于,在举世都奔向力和利的时候,他肯定站在旁边喊:危险!危险!


在文学江湖,辜鸿铭或可是个异类。他的存在让文学变得更斑斓,人在此山中,云深不知处。

<<<

2018年06月09日周六下午02:48:50

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "当那哲学家进客厅来时,我即迅速表示我对他容许我拜会他的谢意。他指给我一张椅子,帮我倒茶。“你想见我对我是一种奉承,”他回答,“你的国人只和苦力及买办交易,他们以为每一个中国人如果不是这一种,就一定是那一种。”我想冒险抗议,但我尚未了解他的真意。他把背倚在椅子上,用一种嘲弄的表情望着我。“他们以为若他们已经点头示意,我们就一定会去。”我知道他仍然对我朋友不合宜的通知感到不满。我不知道应怎样回答,喃喃地说了一些恭维话。
	——林语堂《信仰之旅》(From Pagan to Christian)第二章 大旅行的开始">>


<$list filter="[field:book_title[邻人之妻]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
耕种和食物的关系好理解,而爱情和前二者的联系是这本书的想象空间变得丰满充盈。读完方知,书名的这三个关键词是本书的三个主题。更准确一点的描述,书名三个词的逻辑顺序应该是:爱情、耕种、食物。因为主人公因爱情而跟随男朋友脱离繁华都市去乡村耕种,又因耕种而收获食物和爱情的果实。

> 这本书记载了扰乱我人生轨迹的两段爱情:一段是与农耕这门脏乱而令人沉迷的艺术;另一段是与一个复杂而令人恼怒的农夫,在宾夕法尼亚州立大学,我与他邂逅。

像作者选择这种返朴归真的务农生活在中国当下是极其难以看到的现象,大家都逃离农村,想尽办法的扎根都市。不管选择什么样的生活本无对错,但人的一生应该怎么度过确是应该认真考虑的问题。作为纽约都市的一名记者白领,作者的选择也经过了痛苦和彷徨。

> 有时我会想,我怎么会来到这里,作为某人的妻子,来到北郡一个古老的农舍中。我有时仍然会觉得自己是剧中的一个演员,真实的我在外面流连到凌晨四点,穿着高跟鞋,拿着手包;而剧中的我凌晨四点就起床了,穿着牛仔裤,拿着多功能工具刀。

然而痛苦彷徨之后是涅槃。

> 包围我的不是城市的声色犬马,而是五百英亩田地。今夜云雾缭绕。这个农场是一个更加黑暗、更加安静的世界,比我想象中的乡村更美丽,也更野性。

作者选择的田园生活并不是我们旅游时候看到的田园风光和世外桃源,而是刀耕火种般的原始农业作业方式。这可不是一种浪漫主义的想象和体验,而是身体力行的参与和土地的亲密接触。“农夫辛勤劳作,大自然笑里藏刀,农夫潸然泪下,这就是农业的发展简史。”

> 我和马克都是第一代农人。我们一起建造的这个农场可以说很古典,也可以说非常现代,这就看你问的是谁了。土壤因为有堆肥和覆盖植物而十分肥沃。我们不用杀虫剂,也不用除草剂。农场大部分工作由马来完成,而不是用拖拉机。种植的作物多种多样,一块一块的田地是由灌木篱墙和小林地隔开的。我们有一片糖枫林、一片果园、一大片草场和干草地,还有四季常青的花木园。我们亲自用手挤奶,奶牛的奶水非常充沛,用这样的牛奶做出的黄油十分鲜美。我们在草地上养猪、肉牛和鸡,到屠宰的季节我们会做生香肠和风干香肠、意大利烟肉、咸牛肉、肉酱,还有几夸脱醇美的汤。

> 盛夏是马克曾经告诫过我的疯狂赛跑的时节,各种事情迫在眉睫,进行时间与速度的比拼。干草!篱笆!收获!杂草!我们全速奔跑,种下晚熟的胡萝卜和甜菜。我们虐待卷心菜秧苗,拿着浅盘一路小跑,将它们扔在地里,然后用膝盖爬行,将每一株幼苗塞到土中,一点也不怜香惜玉。新的一天从凌晨三点四十五分就开始了。黎明之前干杂活儿,太阳完全升起之前就带着役马下田劳作,然后是干活儿,干活儿,干活儿,与天气赛跑,与杂草赛跑,与季节赛跑。一天下午,我坐在中耕机上,在垄沟末端睡着了,梦见自己坐在一条小船上。晚上挤奶从下午四点半开始,清扫和杂活儿要到七点才能结束,但是鸡要到九点才会歇息,我们要在那时候把它们关进鸡笼,防止被猫头鹰吃掉。没过几个小时,这样的一天再次上演。

如果说都市人魂牵梦绕的回归是一种乡愁,是对都市生活的厌烦和柏拉图式的憧憬。但真正敢于逃离都市,敢于平凡而又安静的与土地为伴的人才是真正的生活者。

> 我学到的这些东西中,最艰难的就是,你如何通过农耕改变这片土地,农耕也会如何改变你。它渗透到你的血液中,一如尘土栖居在你粗厚手掌的褶皱和指甲里。它向你的身体不断索取,让你耗尽心力,在你五十岁的时候摧毁你;当你醒来时,会发现自己膝盖劳损,肩膀失灵,耳朵因机器的长期轰鸣而失聪,而且一贫如洗。农耕扎根在你的生命里,排挤掉其他的活动,让它们看起来微不足道。你的土地成为你的整个世界。也许你意识到在这片土地之外,在你遥远的过去,在声光世界和钢筋水泥中,有外卖食物和中央空调,没有这样那样的不便;但在这样的世界中,你实际上是被剥夺了,被剥夺了渴望、努力、艰辛和有意义的成就。农场会向你索取,如果你不做出足够的努力,死亡和野性的原始力量会将你吞没。所以,你自然而然地给予,然后给予得更多,几乎接近极限。这时,也仅仅是在这时,它给你丰厚的回报,不仅填满你的地窖,也滋润了你干涸而杂草丛生的灵魂土地。

PS.书中也涉及到一些植物学,[[《杂草的故事》|杂草的故事]]提到的一些杂草的现实版本。

2019年03月18日周一下午10:29:43

The Call of the Land: Meet The Next Generation of Farmers(需科学上网):

<iframe width="560" height="315" src="https://www.youtube.com/embed/OHfUOB6Fe48" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[重新定义团队:谷歌如何工作]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[野性的呼唤]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
之前我写过一个“人头贸易”故事,今日故事过犹不及。

旧山阳县(今江苏淮安),宋朝乃楚州首县,有一街,名金子巷。金子巷无金,因子而贵。

话说宋太祖赵匡胤未黄袍加身前,效力后周。从周世宗攻取楚州时,州人力抗周师,前赴后继,誓死护城,周朝部队久不能克。既克,周世宗命屠杀血洗山阳城,满城狼烟,尸塞巷陌,血充于野。赵匡胤至一巷,见一妇人,身首异处---头在路上,身在路旁,而身旁有一婴尚在吃奶中。见之,赵匡胤潸然泪流,命手下停止前进,原路返回,并把婴儿抱回,一奶妈专职抚养。

由此,巷中百姓因此婴在屠城中幸存,遂叫“因子巷”,由于日久口音之误,后乃称为“金子巷”。

“一将功成万骨枯”,几百年过去了,今日此巷不知是否尚存?

细思极恐!

[[地址|https://mp.weixin.qq.com/s/A3qCIdJiGzzAZs8ijGmhbw]]
<<<
钱锺书先生读书多且快人所共知,饶宗颐先生说钱先生可能是跳读,对此说我一直存疑,今见《钱锺书手稿集•外文笔记》的责编田媛说她在整理书目发现钱先生的阅读习惯是一般从头到尾通读下来,可释疑矣。
<<<


<$details summary="《钱锺书手稿集•外文笔记》" class="notification">
[img[https://i.loli.net/2018/05/06/5aef1357b1505.jpg]]
</$details>

那么钱钟书读书法详细情况是怎么样的?

//2018年05月12日 14:50//

钱钟书遗孀杨绛先生所作《钱钟书手稿集》序中可大致看出钱钟书先生的读书法。

''释疑:钱钟书并非记忆力强''

<<<
许多人说,钱锺书记忆力特强,过目不忘。他本人却并不以为自己有那么“神”。他只是好读书,肯下功夫,不仅读,还做笔记;不仅读一遍两遍,还会读三遍四遍,笔记上不断地添补。所以他读的书虽然很多,也不易遗忘。
<<<


''前因:书非借不能读也''


<<<
钟书读书做笔记成了习惯。但养成这习惯,也因为我们多年来没个安顿的居处,没地方藏书。他爱买书,新书的来源也很多,不过多数的书是从各图书馆借的。他读完并做完笔记,就把借来的书还掉,自己的书往往随手送人了。钟书深谙“书非借不能读也”的道理,有书就赶紧读,读完总做笔记。无数的书在我家流进流出,存留的只是笔记,所以我家没有大量藏书。
<<<

''方法:露钞雪纂、聊补三箧之无,铁画银钩,虚说千毫之秃''

<<<
他做笔记的习惯是在牛津大学图书馆(Bodleian——他译为饱蠹楼)读书时养成的。因为饱蠹楼的图书向例不外借。到那里去读书,只准携带笔记本和铅笔,书上不准留下任何痕迹,只能边读边记。钟书的“饱蠹楼书记”第一册上写着如下几句:“廿五年(一九三六年)二月起,与绛约间日赴大学图书馆读书,各携笔札,''露钞雪纂、聊补三箧之无,铁画银钩,虚说千毫之秃'',是为引。”第二册有题辞如下:“''心如椰子纳群书,金匮青箱总不如,提要勾玄留指爪,忘筌他日并无鱼''。(默存题,季康以狼鸡杂毫笔书于灯下)”这都是用毛笔写的,显然不是在饱蠹楼边读边记,而是经过反刍,然后写成的笔记。

做笔记很费时间。钟书做一遍笔记的时间,约莫是读这本书的一倍。他说,一本书,第二遍再读,总会发现读第一遍时会有很多疏忽。最精彩的句子,要读几遍之后才发现。
<<<


''后果:大量知识遗产''


<<<
钟书去世后,我找出大量笔记,经反复整理,分出三类。

第一类是外文笔记(外文包括英、法、德、意、西班牙、拉丁文)。除了极小部分是钟书用两个指头在打字机上打的,其余全是手抄。笔记上还记有书目和重要的版本以及原文的页数。他读书也不忽略学术刊物。凡是著名作家有关文学、哲学、政治的重要论文,他读后都做笔记,并记下刊物出版的年、月、日。钟书自从摆脱了读学位的羁束,就肆意读书。英国文学,在他已有些基础。他又循序攻读法国文学,从十五世纪到十九世纪而二十世纪;也同样攻读德国文学、意大利文学的历代重要作品,一部一部细读,并勤勤谨谨地做笔记。这样,他又为自己打下了法、德、意大利的文学基础。以后,他就随遇而读。他的笔记,常前后互相引证参考,所以这些笔记本很难编排。而且我又不懂德文、意大利文和拉丁文。恰逢翻译《围城》的德国汉学家莫宜佳博士(ProfessorDr.MonikaMotsch)来北京。我就请她帮我编排。她看到目录和片断内容,“馋”得下一年暑假借机会又到北京来,帮我编排了全部外文笔记。笔记本共一百七十八册,还有打字稿若干页,全部外文笔记共三万四千多页。


第二是中文笔记。他开始把中文的读书笔记和日记混在一起。一九五二年知识分子第一次受“思想改造”时,他风闻学生可检查“老先生”的日记。日记属私人私事,不宜和学术性的笔记混在一起。他用小剪子把日记部分剪掉毁了。这部分笔记支离破碎,而且都散乱了,整理很费功夫。他这些笔记,都附带自己的议论,亦常常前后参考、互相引证。以后的笔记他都亲自记下书目,也偶有少许批语。中文笔记和外文笔记的数量,大致不相上下。

第三类是“日札”———钟书的读书心得。日札想是“思想改造”运动之后开始的。最初的本子上还有涂抹和剪残处。以后他就为日札题上各种名称,如“容安馆日札”、“容安室日札”、“容安斋日札”;署名也多种多样,如“容安馆主”、“容安斋居士”、“槐聚居士”等等;还郑重其事,盖上各式图章。我先还分门别类,后来才明白,这些“馆”、“斋”、“室”等,只是一九五三年“院系调整”后,我家居住的中关园小平房(引用陶渊明《归去来辞》“审容膝之易安”)。以后屡次迁居,在钟书都是“容膝易安”的住所,所以日札的名称一直没改。

日札共二十三册、二千多页,分八百零二则。每一则只有数目,没有篇目。日札基本上是用中文写的,杂有大量外文,有时连着几则都是外文。不论古今中外,从博雅精深的历代经典名著,到通俗的小说院本,以至村谣俚语,他都互相参考引证,融会贯通,而心有所得,但这点“心得”还待写成文章,才能成为他的著作。《管锥编》里,在在都是日札里的心得,经发挥充实而写成的文章。例如:《管锥编.楚辞洪兴祖补注》十八则,共九十五页,而日札里读《楚辞》的笔记一则,只疏疏朗朗记了十六页;《管锥编.周易正义》二十七则,共一百零九页,而日札里读《周易》的笔记,只有一则,不足十二页;《管锥编.毛诗正义》六十则,共一百九十四页,而日札里读《毛诗》的笔记二则,不足十七页。

<<<

2018年06月09日周六下午01:45:57 补
<$list filter="[field:book_title[闲情偶寄]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

<$list filter="[field:book_title[阅读心理学]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[阅读是一座随身携带的避难所]] -[title[Manage Books]] -[title[Library Tracker]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
上一篇我整理了几个世界主流[[阅读行为眼动模型|]] <<footnote "①"人的眼球运动有三种基本的类型:注视、眼跳和追随运动。为了看清楚某一物体,两只眼睛必须保持一定的方位,才能使物体成像在视网膜上。这种将眼睛对准对象的活动叫注视。为了实现和维持对物体最清楚的视觉,眼睛还必须进行跳动和追随运动。">>研究结果,包括注视(fixation)、眼跳(眼球的跳动saccade)、追随运动(pursuit movement)、跳读(word-skipping)、回视(regression)等基本概念。从世界范围内各大语系的研究结果来看,阅读行为从物理(相对于心理而言)也就是身体参与行为 --- 眼动而言有其基本规律:眼跳速度、回视次数可以加速我们阅读疲劳;注视位置、眼跳以及追随运动的合理可以加速我们阅读。

为什么要了解阅读行为眼动规律?

对于民间研究者或一般阅读和写作者来说,有两方面的目的:

* 从阅读角度来说。如果说阅读方法(例如查尔斯·范多伦的[[如何阅读一本书]])为软件的话(我更愿意把这些阅读方法看为一种阅读框架,是一种方法论),身体就为硬件,而了解阅读眼动运动规律,就相当于您知道这台机器运作的运作机制,只有知道了电脑或手机CPU、显卡等参数,我们才能够知道这台机器的性能如何,从而在实际工作中发挥其最大的功效,甚至可以通过跳频或外挂等模式超越本身的局限。之于阅读,了解了阅读的眼动规律,可以提高阅读效率,一目十行不再是梦。从而在有限的人生时间,阅读更多的书。

* 从写作的角度来说。也只有知道了人类阅读的眼动规律,如阅读时候的注视点落在哪里,眼跳和追随运动的轨迹,跳读和回视的原因等,我们在写作或文本输出的时候就不会逆自然规律而行,从而让读者可以顺畅而快速的阅读。

这是站在个人的角度来看。从科研者的角度,眼动规律可以为仿生和人工智能提高理论基础,而在社会实际效用上,可以为阅读困难症儿童提供解决方案。

2018年04月15日周日下午02:50:35
一方面因为工作,一方面为了兴趣,最近对读书以及与读书有关的书和研究项目比较关注。我在 [[Calibre Library数据库|https://drive.google.com/drive/folders/107OuJ2L689Ob-DgEurtBAeahVgcFfvQ0?usp=sharing]] 中建立了一个“书的书”标签,主要是关于人类阅读史、个人阅读史以及书籍收藏史等方面的书;关于阅读行为科学研究和阅读心理学方面的书似乎很少,现有的也大多是国外著作,如《牛津阅读手册》、《阅读心理学》(The Psychology of Reading )等,中文阅读领域的研究比国外要晚和浅陋太多。最近读的这本《[[阅读心理学]]》,应该算是中文阅读心理学方面专业著作了,不过太水,有点像学生写的毕业论文 --- 凑数迹象严重,不过也不妨碍这拨人有些许研究成果。

<<<
本书全面系统地总结了国内外阅读心理学研究取得的成果,内容包括总论、阅读心理学的研究方法、眼动与阅读、字词识别、词切分机制、句子理解、语篇理解、阅读能力的发展和阅读障碍等九部分,囊括了阅读心理学的重要内容,基本上反映了当代阅读心理学研究的进展。
<<<


虽然对这本书基本上是速览,也发现一些有价值的观点和科研成果(有的来自国外)。

<<<
当其他条件恒定时,同一被试或不同被试之间存在的阅读速度差异主要与如下问题有关:被试是否容易形成有规律、有节奏的眼动并将之保持。这种眼动的特点是:第一,每行注视次数相同;第二,注视停留时间长短有序,每行的第一次注视停留时间应该是最长的,接近行尾时的注视停留时间次之。(7)在排版时一行文字长度应该为75—85mm,这样有利于阅读。<<ref "[1]">>


眼疲劳会减慢阅读速度。进一步的研究表明,若眼跳距离较大,如150mm,眼睛会很快变得疲劳。<<footnote "[2]"同上">>

他们通过实验研究发现:(1)读者对低频词的注视时间较长,对句子结尾的词的注视时间较长;(2)读者对每个实意词至少注视了一次,只是对一些短的功能词进行跳读;(3)注视时间随着词在句子中的作用和词本身的特点而变化;(4)总注视时间反映了理解该词所需要的时间;(5)当需要对句子意思进行整合时,注视时间增加。
  <<ref "[3]">>
<<<


2018年04月05日周四下午09:37:27

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  
<<footnotes "[1]" "《阅读心理学:关于阅读节奏和眼动的实验研究》(The Psychology of Reading:An Experimental Study of the Reading Pauses and Movements of the Eye)">>

<<footnotes "[3]" "《阅读的理论:从眼睛注视到理解》(A Theory of Reading:From Eye Fixation to Comprehension )">>
多数眼跳  <<ref "①">> 都是从一个已知区域朝向新的未知区域,即向前眼跳(progressive saccade),但有时还会出现反方向的眼跳,被称为''回视''(regression),指退回到前面语句的眼跳。回视也是一个重要的眼动现象,对于熟练阅读者来说,10%—15%的时间被用于回视。

在一次阅读行为过程中,对文章的认知加工影响眼动模式,眼动中存在一些认知控制。眼跳和回事次数多了,疲劳感就会加快。二影响眼跳和回视的因素是多方面的,如陌生词和熟练词、阅读视窗的字数等   <<ref "②">> 

另外眼睛似乎并不是常常等待目前所注视的词加工完之后才继续向前运动。

''关于跳读''。Morrison解释跳读现象:当读者正在注视词n时,在125ms后词n被识别,注意转移到词n+1,并作出移动到词n+1的眼跳计划;词n+1很快被识别(在175ms时),注意转移到词n+2,并作出移动到n+2的眼跳计划。由于第二次眼跳计划在第一次眼跳计划之后很快地作出(相差50ms),所以第一次眼跳计划被取消,即当被试注视完词n后,直接移动注意到词n+2,词n+1被跳读(如图):

<<imageSlider  [[https://cl.ly/qriJ/Snipaste_2018-04-13_23-22-21.png]]    "Morrison模型中的眼跳过程">>

''E-Z读者模型''(E-Z reader model)是由Reichle、Pollatsek、Fisher和Rayner在1998年提出的一种阅读加工模型。

<<imageSlider  [[http://f.cl.ly/items/2n3Y0L0x1v3v31361U2Q/Snipaste_2018-04-13_23-26-07.png]]    "E-Z读者模型7示意图">>

<<imageSlider  [[http://f.cl.ly/items/0g023s0y0H1E0d2Q1U0p/Snipaste_2018-04-13_23-28-06.png]]    "E-Z读者模型9示意图">>

''SWIFT模型''主要有两大功能模块:词汇加工(lexical processing)和眼跳计划(saccade programming),具体见图:

<<imageSlider  [[http://f.cl.ly/items/0G162N3W1L1S012w2a0g/Snipaste_2018-04-13_23-22-21.png]]    "SWIFT模型的功能模块">>

''Glenmore模型''的结构成分主要包括:输入模块、字母加工模块、单词加工模块、显著图、注视中心以及眼跳产生器(产生实际的眼跳运动),见下图:

<<imageSlider  [[http://f.cl.ly/items/3S2Q4520220a2A3m1S1h/Snipaste_2018-04-13_23-32-03.png]]    "Glenmore模型结构示意图">>

<<imageSlider  [[http://f.cl.ly/items/3z3f220W1915170n1m2I/Snipaste_2018-04-13_23-36-03.png]]    "Glenmore模型内部连接性的简明图解">>

2018年04月13日周五下午11:05:41 

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "眼球的跳动(saccade)是巴黎大学的Javal教授(1878)发现的。眼跳的功能是改变注视点,使下一步要注视的内容落在视网膜最敏感的区域——中央凹附近,这样就可以清楚地看到想要看到的内容了。通常我们不容易觉察到眼睛在跳动,而觉得是在平滑地运动。">>

 <<footnotes "②" "Rayner和Pollatsek(1981)为眼跳的直接控制提供了可靠的证据,他们使用窗口技术,窗口随注视点不同而不同。他们发现,在一次注视中,当有正常文章的窗口大小从9个字符增加到17个字符,再到33个字符时,该次注视之后的眼跳距离显著增加。">>


<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[阳台故事集]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[陶庵梦忆]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
<$list filter="[field:book_title[随园食单]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[雅记清词写流韵]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
Weekly:9.11~9.17

''书名:''《雪涛谐史》  明·江盈科

号称“史”,实不记史,多是坊间传说,古代段子荟萃。亘史云:“此可入《世说》,何云《谐史》乎?”,更像《世说新语》。每卜百十来字,诙谐、幽默、戏虐。正如作者再前言“谐史引”所载:

<<<
善乎李君实先生之言曰:“孔父大圣,不废莞尔,武公抑畏,犹资善谑。”仁义素张,何妨一弛,郁陶不开,非以涤性。唯达者坐空万象,恣玩太虚,深不隐机,浅不触的;犹夫竹林森峙,外值中通,清风忽来,枝叶披亚。有无穷之笑焉,岂复有禁哉?余故于雪涛氏有取焉耳。
<<<

摘几个段子,以飨:

<<<
宋时有显者,既归田,语所知曰:“我们从林下看宦途,知得滋味如此耳;但不知死人住地下,比生时较好否?”所知曰:“一定好。”显者曰:“何以知之?”其人答曰:“但闻林下人思量出去,不闻地下人思想转来。”显者大笑。
<<<


<<<
北人与南人论橄榄与枣孰佳,北人曰:“枣味甜。”南人曰:“橄榄味虽辣,却有回甜。”北人曰:“等你回得甜来,我先甜了一会。”
<<<


<<<
国朝有陈全者,金陵人,负俊才,性好烟花,持数千金,皆费于平康市。一日浪游,误入禁地,为中贵所执,将畀巡城。全跪曰:“小人是陈全,祈公公见饶。”中贵素闻全名,乃曰:“闻陈全善取笑,可作一字笑,能令我笑,方才放你。”全曰:“屁。”中贵曰:“此何说?”全曰:“放也由公公,不放也由公公。”中贵笑不自制,因放之。

及全病革将死,鸨子皆慰全曰:“我家受公厚恩,待百岁后,尽力茔葬,仍为立碑。”全答曰:“好好,这碑就交在身上。”盖世名鸨子为龟,龟载碑者也。
<<<

''下载地址:''[[三家村公开版权精品书籍]]
<$list filter="[field:book_title[零Zerro]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
下载地址:[[PDF|https://www.asuswebstorage.com/navigate/s/119F040139C3413B80E8BA79CF500D854]]
<$list filter="[field:book_title[青泥莲花记]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   
常在书中遇到“静业”一词,不知道此静何意,以至乃成业,想必静业也会带来一定的业报。近日在南怀瑾《[[维摩诘的花雨满天]]》一书中,老先生这样解释到:


<<<
净业不是善业,善与恶像是一阴一阳,是相对的。没有恶业仅有善业还不能算是净业,净业是善恶二边都不着,无着无依,非有非空,连空也空。佛境界是净业,十方三世诸佛国上皆是净土,因为心净所以国土净。 
<<<

按照上面的解释,静业是一种中庸状态,即是善亦不过激。中庸看起来有点世俗化,不如可以这样理解:静业是一种元状态,即人之初为人时的无善亦无恶的原始状态。如果以中庸的思想来解读,符合中国古代唯心主义哲学观点论,《论语·庸也》“中庸之为德也,其至矣乎。”此处德即位静业之人文属性吧。关于善与恶,自古就有两论,亚圣孟子的思想则认为人性善。《孟子·告子上》:“恻隐之心,人皆有之;羞恶之心,人皆有之;恭敬之心,人皆有之;是非之心,人皆有之。恻隐之心,仁也;羞恶之心,义也;恭敬之心,礼也;是非之心,智也。”如果按照佛教说--- --- 佛即我,我即佛,“放下屠刀立地成佛”,佛的境界便是静业,我辈只要秉持[[不二|不二论]]的中庸观,即为修持静业,便可以达到彼岸佛土<<footnote "[1]"佛土,又作佛国、佛国土、佛界、佛刹。指佛所住的位处,或佛教化的国土。佛境界是净业,十方三世诸佛国上皆是净土,因为心净所以国土净。而净土是清净的地方,没有染污的庄严世界。在大乘佛教里指的是任何一个佛菩萨为渡化有情众生,以本愿力成就的佛土,都可以称净土。">>。

//2018年03月04日周日下午10:17:49//
<span title="香水"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[香水]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="马关议和中之伊李问答"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=30%></a>
</span>

<$list filter="[field:book_title[马关议和中之伊李问答]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[鱼·翅与花椒]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
民国文人两大悬疑(或者说秘密),一个之前是王国维之死,之前在[[一个人的书房]]提到过(见[[五十之年,只欠一死]]);一个是鲁迅两兄弟 --- 周树人和周作人 --- 决裂。

鲁迅的母亲曾对许钦文四妹许羡苏说过:“龙师父给鲁迅取了个法名——长庚,原是星名,绍兴叫‘黄昏肖’。周作人叫启明,也是星名,叫‘五更肖’,两星永远不相见”(陈漱渝《东有启明,西有长庚——鲁迅与周作人失和前后》)。龙师父的话,竟成了谶语,自1923年7月始,周氏兄弟突然反目,从此真的“永远不相见”了。

鲁氏两兄弟同是新文化运动的排头兵,号召性人物。而关于鲁氏两兄弟的决裂个中原因众说纷纭。这是鲁氏兄弟的家事,外人的指手画脚均无迹可查,无证可取,只能从当事人话里话外和字里行间也许可以看出个端倪来。

周作1923年17日的日记记载:“阴,上午池上来诊。下午寄乔风稿件,焦菊隐、王懋廷二君函。”其实根据周作人后来写的《知堂回想录》可知,这则日记中原来写了兄弟矛盾的内容,后被周作人自己“用剪刀剪去了”。

鲁迅7月19日日记中记有“上午启孟自持信来,后邀欲问之,不至。下午雨”。周作人的信全文如下:

<<<
鲁迅先生:''我昨日才知道——''但过去的事不必再说了。我不是基督徒,却幸而尚能担受得起,也不想责难——大家都是可怜的人间,我以前的蔷薇的梦原来都是虚幻,现在所见的或者才是真的人生。我想订正我的思想,重新入新的生活。以后请不要再到后边院子里来,没有别的话。愿你安心,自重。七月十八日,作人。
<<<

“我昨日才知道——“。知道什么?什么是周作人如此怅然、委屈和痛苦?

8月2日鲁迅日记:“雨,午后霁。下午携妇迁居砖塔胡同六十一号。”

8月2日周作人日记:“下午,L(鲁迅)夫妇移住砖塔胡同。”

鲁迅搬离二人合租的小院,八道湾胡同六十一号。看似平静。

1924年6月11日鲁迅日记写道:“下午往八道湾宅取书及什器,比进西厢,启孟及其妻突出骂詈殴打,又以电话招重久及张凤举、徐耀辰来,其妻向之述我罪状,多秽语,凡捏造未圆处,则启孟救正之,然终取书、器而出。”

事隔十个月兄弟二人的矛盾再度爆发和激化,甚至到了骂粗口和动手的地步。据说,羽太信子数落鲁迅“罪状”之时,周作人突然拿起狮状铜香炉向其兄头上砸去,幸在场有人接住,鲁迅才免遭血光之灾。

鲁氏兄弟都是五四新文化运动中和北大校园中为人师表的响当当的人物,是什么样的矛盾使两个亲兄弟闹到如此撕破斯文,街头巷里骂街式丑剧?

从当事人的日记中都讳莫如深!事实真相看起来是无人知晓了,外界的猜度各说其词。

与鲁迅交好的郁达夫曾在他写的《回忆鲁迅》一文中透露:


<<<
据凤举他们的判断,以为他们弟兄间的不睦,完全是两人的误解。周作人氏的那位日本夫人,甚至说鲁迅对她有失敬之处。但有时候鲁迅对我说:“我对启明,总老规劝他的,教他用钱应该节省一点,我们不得不想将来,但他对于经济,总是进一个花一个的,尤其是她那位夫人。”从这些地方,会合起来,大约他反目的真因,也可以猜度到一二成了。
<<<

在鲁迅被推上神坛之后,许广平在她的《鲁迅回忆录·所谓兄弟》中,再次引用了鲁迅与她的一段谈话,鲁迅说:

<<<
“我总以为不计较自己,总该家庭和睦了罢,在八道湾的时候,我的薪水,全行交给二太太,连周作人的在内,每月约有六百元,然而大小病都要请日本医生来,过日子又不节约,所以总是不够用,要四处向朋友借。有时借到手连忙持回家,就看见医生的汽车从家里开出来了。我就想:‘我用黄包车运来,怎敌得过用汽车带走的呢?’”
<<<

在许广平另一篇文章《略谈鲁迅先生的笔名》中说,鲁迅辑成《俟堂专文杂集》,署名“宴之敖”,后《铸剑》也用此名。许广平回忆,鲁迅对“宴之敖”笔名这样解释:

<<<
“先生说:‘宴’从门(家),从日,从女;敖从出,从放(《说文》做……游也,从出从放);我是被家里的日本女人逐出的。”
<<<

1949年后,在诸多的文人回忆鲁迅的文章中,在提及周氏兄弟反目时,一边倒地站在已成为伟大的革命家、伟大的文学家、伟大的思想家的鲁迅一边。于是周作人在他的《知堂回想录·不辩解说》中,说了下面意味深长的话:

<<<
大凡要说明我的不错,势必先说对方的错。不然也总要举出些隐秘的事情来作材料,这都是不容易说得好,或者不大想说的,那么即使辩解有效,但是说了这些寒碜话,也就够好笑,岂不是前门驱虎而后门进了狼吗?
<<<

除了上面有文有节的猜度,坊间和网上还有人说是因为鲁迅偷看弟媳妇洗澡之说。

不管事实怎么样,二兄弟不说,那是因为人家还是打折骨头连着筋的亲兄弟,不说是为了保护兄弟之间的面子。如果说了,那谁也没有面子和尊严了。

2018年07月05日周四下午02:07:23

<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[黑匣子思维]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span title="黑天鹅."><a href="https://book.douban.com/subject/6854525/" target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}} width=35%></a>
</span>

<$list filter="[field:book_title[黑天鹅]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[黑客与画家]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[齐如山回忆录-清宫史话]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---